เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ‡ เชตเซ‡เช— เช†เชชเชตเชพ เชตเชฟเชถเซ‡เชจเซ‹ เช…เชธเชซเชณ เชฒเซ‡เช–

เชนเซเช‚ เชคเชฐเชค เชœ เชฒเซ‡เช–เชจเซเช‚ เชถเซ€เชฐเซเชทเช• เชธเชฎเชœเชพเชตเซ€เชถ. เชฎเซ‚เชณ เชฏเซ‹เชœเชจเชพ เชเช• เชธเชฐเชณ เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฟเช• เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซ€ เชคเซ‡ เช…เช‚เช—เซ‡ เชธเชพเชฐเซ€, เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชธเชฒเชพเชน เช†เชชเชตเชพเชจเซ‹ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช•เชฟเช‚เช— เชฆเชฐเชฎเชฟเชฏเชพเชจ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช•เซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เชเชŸเชฒเซเช‚ เชงเซ€เชฎเซเช‚ เชจเชฅเซ€ เชœเซ‡เชŸเชฒเซเช‚ เชฎเซ‡เช‚ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เชนเชคเซเช‚, LINQ เชฎเชพเชฐเชพ เชธเซเชตเชชเซเชจเซ‹ เช•เชฐเชคเชพเช‚ เชงเซ€เชฎเซเช‚ เช›เซ‡. เชชเชฃ เช…เช‚เชคเซ‡ เชเชตเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช•เซ‡ เชฎเซ‡เช‚ เชฎเชพเชชเชฎเชพเช‚ เชชเชฃ เชญเซ‚เชฒ เช•เชฐเซ€ เชนเชคเซ€... เช† เชœเซ€เชตเชจเช•เชฅเชพเชจเซ€ เชตเชฟเช—เชคเซ‹ เช•เชŸ เช…เชจเซ‡ เช•เซ‹เชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฆเซเชฆเชจ เชธเชพเชฎเชพเชจเซเชฏ เชนเซ‹เชตเชพเชฅเซ€ เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชเชจเซเชŸเชฐเชชเซเชฐเชพเช‡เชเชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡เชฎ เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡ เช–เซ‚เชฌ เชœ เชฐเชธเชชเซเชฐเชฆ เชฌเชจเซเชฏเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡, เชœเซ€เชตเชจเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ: เชฒเซ‡เช–เชจเชพ เชฎเซเช–เซเชฏ เชตเชฟเชทเชฏเชจเซ€ เช—เชคเชฟ เชชเชฐ เช…เชธเชฐ เชนเชคเซ€. เชฌเชพเชนเซเชฏ เชคเชฐเซเช•เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชงเซเชฏเชพเชจเชชเชพเชคเซเชฐ เชจเชฅเซ€: Moq, Autofac, EF เช•เซ‹เชฐ เช…เชจเซ‡ เช…เชจเซเชฏ "เชฌเซ‡เชจเซเชกเชฟเช‚เช—เซเชธ".

เชฎเซ‡เช‚ เช† เชฒเซ‡เช–เชจเซ€ เช›เชพเชช เชนเซ‡เช เชณ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚: เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เช•เซ‡เชฎ เชงเซ€เชฎเซเช‚ เช›เซ‡

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชฒเซ‡เช–เช• เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‡ เชธเซ€เชงเชพ เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เชธเช‚เช•เชฒเชฟเชค เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชธเชฐเชธ เชฐเซ€เชค เช›เซ‡. เช…เชฒเชฌเชคเซเชค, IL เช‰เชคเซเชธเชฐเซเชœเชจ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชคเซ‡เชจเซ‡ เชŸเชพเชณเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เช† เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซŒเชฅเซ€ เชถเซเชฐเชฎ-เชธเช˜เชจ เชฐเซ€เชค เช›เซ‡, เชœเซ‡ เชญเซ‚เชฒเซ‹เชฅเซ€ เชญเชฐเชชเซ‚เชฐ เช›เซ‡.

เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ€ เช—เชคเชฟ เชตเชฟเชถเซ‡ เชฎเซ‡เช‚ เชนเช‚เชฎเซ‡เชถเชพ เชธเชฎเชพเชจ เช…เชญเชฟเชชเซเชฐเชพเชฏ เชฐเชพเช–เซเชฏเซ‹ เช›เซ‡ เชคเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ, เชฎเชพเชฐเซ‹ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชฒเซ‡เช–เช•เชจเชพ เชจเชฟเชทเซเช•เชฐเซเชท เชชเชฐ เชชเซเชฐเชถเซเชจ เช•เชฐเชตเชพเชจเซ‹ เช‡เชฐเชพเชฆเซ‹ เชจเชนเซ‹เชคเซ‹.

เชนเซเช‚ เช˜เชฃเซ€เชตเชพเชฐ เชเชจเซเชŸเชฐเชชเซเชฐเชพเช‡เชเชฎเชพเช‚ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ‹ เชจเชฟเชทเซเช•เชชเชŸ เช‰เชชเชฏเซ‹เช— เช…เชจเซเชญเชตเซเช‚ เช›เซเช‚. เชชเซเชฐเช•เชพเชฐ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฎเชฟเชฒเช•เชค เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชธเซ‡เชŸเชตเซ‡เชฒเซเชฏเซ เชชเชฆเซเชงเชคเชฟ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฆเชฐเซ‡เช•เชจเซ‡ เช†เชจเช‚เชฆ เชฅเชพเชฏ เช›เซ‡. เชฒเช•เซเชทเซเชฏ เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชฆเชฐเซ‡เช• เช–เซเชถ เช›เซ‡. เช–เซ‚เชฌ เชœ เชธเซเชฎเชพเชฐเซเชŸ เชฒเซ‹เช•เซ‹ - เชตเชฐเชฟเชทเซเช  เช…เชจเซ‡ เชŸเซ€เชฎ เชฒเซ€เชกเซเชธ - เชคเซ‡เชฎเชจเชพ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชชเชฐ เชฒเช–เซ‡ เช›เซ‡, เช†เชตเชพ เชจเชฟเชทเซเช•เชชเชŸ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เช†เชงเชพเชฐเซ‡ "เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช•" เชฎเซ‡เชชเชฐเซเชธ เชเช• เชชเซเชฐเช•เชพเชฐเชฅเซ€ เชฌเซ€เชœเชพ. เชธเชพเชฐ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช† เช›เซ‡: เช†เชชเชฃเซ‡ เชฌเชงเชพ เช•เซเชทเซ‡เชคเซเชฐเซ‹ เชฒเชˆเช เช›เซ€เช, เชฌเชงเซ€ เชฎเชฟเชฒเช•เชคเซ‹ เชฒเชˆเช เช›เซ€เช, เชคเซ‡เชจเชพ เชชเชฐ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ€เช เช›เซ€เช: เชœเซ‹ เชชเซเชฐเช•เชพเชฐเชจเชพ เชธเชญเซเชฏเซ‹เชจเชพ เชจเชพเชฎ เชฎเซ‡เชณ เช–เชพเชฏ เช›เซ‡, เชคเซ‹ เช…เชฎเซ‡ เชธเซ‡เชŸเชตเซ‡เชฒเซเชฏเซ เชšเชฒเชพเชตเซ€เช เช›เซ€เช. เชธเชฎเชฏ เชธเชฎเชฏ เชชเชฐ เช…เชฎเซ‡ เชญเซ‚เชฒเซ‹เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช…เชชเชตเชพเชฆเซ‹ เชชเช•เชกเซ€เช เช›เซ€เช เชœเซเชฏเชพเช‚ เช…เชฎเชจเซ‡ เชเช• เชชเซเชฐเช•เชพเชฐเชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ€เช• เชฎเชฟเชฒเช•เชค เชฎเชณเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช…เชนเซ€เช‚ เชชเชฃ เชเช• เชฐเชธเซเชคเซ‹ เช›เซ‡ เชœเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเซ‡ เช›เซ‡. เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹/เชชเช•เชกเซ‹.

เชฎเซ‡เช‚ เชฒเซ‹เช•เซ‹เชจเซ‡ เชชเชพเชฐเซเชธเชฐเซเชธ เช…เชจเซ‡ เชฎเซ‡เชชเชฐเซเชธเชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชชเชนเซ‡เชฒเชพเช‚ เช†เชตเซ‡เชฒเชพ เชฎเชถเซ€เชจเซ‹ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชธเชพเชฅเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชธเชœเซเชœ เชฅเชฏเชพ เชตเชฟเชจเชพ เชซเชฐเซ€เชฅเซ€ เชถเซ‹เชงเชคเชพ เชœเซ‹เชฏเชพ เช›เซ‡. เชฎเซ‡เช‚ เชœเซ‹เชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชฒเซ‹เช•เซ‹ เชคเซ‡เชฎเชจเชพ เชจเชฟเชทเซเช•เชชเชŸ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพเช“ เชชเชพเช›เชณ, เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชชเชพเช›เชณ, เช‡เชจเซเชœเซ‡เช•เซเชถเชจ เชชเชพเช›เชณ เช›เซเชชเชพเชตเชคเชพ เชนเซ‹เชฏ เช›เซ‡, เชœเชพเชฃเซ‡ เช•เซ‡ เช† เช…เชจเซเช—เชพเชฎเซ€ เชฌเซ…เช•เชจเชพเชฒเชฟเชฏเชพเชจเซ‡ เชฎเชพเชซ เช•เชฐเชถเซ‡. เช†เชตเซ€ เช…เชจเซเชญเซ‚เชคเชฟ เชชเชฐ เชฎเซ‡เช‚ เชจเชพเช• เช‰เชชเชฐ เชตเชพเชณเซเชฏเซเช‚. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชฎเซ‡เช‚ เชตเชพเชธเซเชคเชตเชฟเช• เชชเซเชฐเชฆเชฐเซเชถเชจ เชฒเซ€เช•เชจเซ‡ เชฎเชพเชชเซเชฏเซเช‚ เชจ เชนเชคเซเช‚, เช…เชจเซ‡, เชœเซ‹ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซ‹, เชœเซ‹ เชนเซเช‚ เชคเซ‡เชจเชพ เชชเชฐ เชนเชพเชฅ เชฎเซ‡เชณเชตเซ€ เชถเช•เซเช‚ เชคเซ‹ เชฎเซ‡เช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เชตเชงเซ "เชถเซเชฐเซ‡เชทเซเช " เชฎเชพเช‚ เชฌเชฆเชฒเซ€ เชจเชพเช–เซเชฏเซเช‚. เชคเซ‡เชฅเซ€, เชจเซ€เชšเซ‡ เชšเชฐเซเชšเชพ เช•เชฐเซ‡เชฒ เชชเซเชฐเชฅเชฎ เชฎเชพเชช เชฎเชจเซ‡ เช—เช‚เชญเซ€เชฐเชคเชพเชฅเซ€ เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เชฎเซ‚เช•เซ‡ เช›เซ‡.

เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเชพเชฎเชพเช‚เชจเชพ เช˜เชฃเชพ, เชฐเชฟเช•เซเชŸเชฐ เช…เชฅเชตเชพ เช…เชจเซเชฏ เชตเชฟเชšเชพเชฐเชงเชพเชฐเช•เซ‹เชจเซ‡ เชตเชพเช‚เชšเชคเชพ, เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเซเชฏเชพเชฏเซ€ เชจเชฟเชตเซ‡เชฆเชจเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡ เช•เซ‡ เช•เซ‹เชกเชฎเชพเช‚ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เช เชเช• เชเชตเซ€ เช˜เชŸเชจเชพ เช›เซ‡ เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชชเชฐ เช…เชคเซเชฏเช‚เชค เชจเช•เชพเชฐเชพเชคเซเชฎเช• เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡.

เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพเชฅเซ€ CLR เชจเซ‡ เชคเซ‡เช“เชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‡ เชถเซ‹เชงเชตเชพ, เชคเซ‡เชฎเชจเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เช–เซ‡เช‚เชšเชตเชพ, เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพ เชตเช—เซ‡เชฐเซ‡ เชฎเชพเชŸเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชตเชพเชจเซ€ เชซเชฐเชœ เชชเชกเซ‡ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เช•เซเชฐเชฎเชจเซ‡ เชชเชพเชฐ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชซเชพเชณเชตเชฃเซ€ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡. เช…เชฎเซ‡ เชฎเซ‡เชฎเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, CLR GC เชจเซ‡ เช–เซ‹เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชซเซเชฐเซ€เช เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡. เชคเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชงเซ€เชฎเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช, เชฎเชพเชฐเชพ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ‹. เช†เชงเซเชจเชฟเช• เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชธเชฐเซเชตเชฐเซเชธ เช…เชฅเชตเชพ เช•เซเชฒเชพเช‰เชก เชฎเชถเซ€เชจเซ‹ เชชเชฐ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชตเชฟเชถเชพเชณ เชฎเชพเชคเซเชฐเชพ เช‰เชšเซเชš เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชตเชฟเชฒเช‚เชฌเชจเซ‡ เช…เชŸเช•เชพเชตเชคเซ€ เชจเชฅเซ€. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชœเซ‡เชŸเชฒเซ€ เชตเชงเซ เชฎเซ‡เชฎเชฐเซ€, เชคเชฎเซ‡ GC เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพ เชตเชงเซ เชนเชถเซ‡. เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ, เชธเชฟเชฆเซเชงเชพเช‚เชคเชฎเชพเช‚, เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชเช• เชตเชงเชพเชฐเชพเชจเซ‹ เชฒเชพเชฒ เชฐเชพเช— เช›เซ‡.

เชœเซ‹ เช•เซ‡, เช…เชฎเซ‡ เชฌเชงเชพ IoC เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชจเซ‡ เชคเชพเชฐเซ€เช– เชฎเซ‡เชชเชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช, เชœเซ‡เชจเซ‹ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชฆเซเชงเชพเช‚เชค เชชเชฃ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡, เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซ‡เชฎเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชถเซ‡ เช•เซ‹เชˆ เชชเซเชฐเชถเซเชจเซ‹ เชจเชฅเซ€. เชจเชพ, เชเชŸเชฒเชพ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚ เช•เซ‡ เชฌเชพเชนเซเชฏ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชธเช‚เชฆเชฐเซเชญ เชฎเซ‹เชกเซ‡เชฒเซ‹เชฎเชพเช‚เชฅเซ€ เชจเชฟเชฐเซเชญเชฐเชคเชพ เช…เชจเซ‡ เช…เชฎเซ‚เชฐเซเชคเชคเชพเชจเซ‹ เชชเชฐเชฟเชšเชฏ เชเชŸเชฒเซ‹ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ เช†เชชเชฃเซ‡ เช•เซ‹เชˆ เชชเชฃ เชธเช‚เชœเซ‹เช—เซ‹เชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ‡ เชฌเชฒเชฟเชฆเชพเชจ เช†เชชเชตเซเช‚ เชชเชกเชถเซ‡. เชฌเชงเซเช‚ เชธเชฐเชณ เช›เซ‡ - เชคเซ‡ เช–เชฐเซ‡เช–เชฐ เชชเซเชฐเชญเชพเชตเชจเซ‡ เชตเชงเซ เช…เชธเชฐ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.

เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เชคเช•เชจเซ€เช• เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชตเชงเซ เชถเซเชฐเซ‡เชทเซเช  เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฎ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชฏเซเช•เซเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช† เชเช• เช•เซ‡เชถ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช† เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจ เชŸเซเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชธเช‚เช•เชฒเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เช…เชจเซ‡ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเช“ เช›เซ‡. เช† เชœ เช“เชŸเซ‹เชฎเซ‡เชชเชฐ เชธเซเชชเชฐเซเชงเชพเชคเซเชฎเช• เชถเชฌเซเชฆเช•เซ‹เชถ เชœเชพเชณเชตเซ€ เชฐเชพเช–เซ‡ เช›เซ‡ เชœเซ‡ เชชเซเชฐเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชฏ เช›เซ‡ เชœเซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชเช• เชฌเซ€เชœเชพเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เช† เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡? เช…เชจเชฟเชตเชพเชฐเซเชฏเชชเชฃเซ‡, เช† เชคเซ‡ เชคเชฐเซเช•เชฅเซ€ เช…เชฒเช— เชจเชฅเซ€ เช•เซ‡ เชœเซ‡ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเซ‹เชคเซ‡ JIT เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชพเชชเชฐเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช•เซ‹เชˆ เชชเชฆเซเชงเชคเชฟเชจเซ‡ เชชเซเชฐเชฅเชฎ เชตเช–เชค เชฌเซ‹เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชธเช‚เช•เชฒเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ (เช…เชจเซ‡, เชนเชพ, เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชเชกเชชเซ€ เชจเชฅเซ€); เช…เชจเซเช—เชพเชฎเซ€ เช•เซ‰เชฒเซเชธ เชชเชฐ, เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชธเช‚เช•เชฒเชฟเชค เชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เซ‹เชˆ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เช•เชพเชฎเช—เซ€เชฐเซ€เชฎเชพเช‚ เช˜เชŸเชพเชกเซ‹ เชฅเชถเซ‡ เชจเชนเซ€เช‚.

เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเชฎเซ‡ JIT เชธเช‚เช•เชฒเชจเชจเซ‹ เชชเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเชพ AOT เชธเชฎเช•เช•เซเชทเซ‹ เชœเซ‡เชตเชพ เชœ เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเชพเชฅเซ‡ เชธเช‚เช•เชฒเชฟเชค เชตเชฐเซเชคเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เช…เชฎเชพเชฐเซ€ เชฎเชฆเชฆ เชฎเชพเชŸเซ‡ เช†เชตเชถเซ‡.

เชชเซเชฐเชถเซเชจเชฎเชพเช‚เชจเชพ เชธเชฟเชฆเซเชงเชพเช‚เชคเชจเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚ เชจเซ€เชšเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เช˜เชกเซ€ เชถเช•เชพเชฏ เช›เซ‡:
เชคเชฎเชพเชฐเซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเชพ เช…เช‚เชคเชฟเชฎ เชชเชฐเชฟเชฃเชพเชฎเชจเซ‡ เชธเช‚เช•เชฒเชฟเชค เช•เชพเชฐเซเชฏ เชงเชฐเชพเชตเชคเชพ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟ เชคเชฐเซ€เช•เซ‡ เช•เซ‡เชถ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช. เชคเชฎเชพเชฐเชพ เชชเซเชฐเช•เชพเชฐ, เช•เชพเชฐเซเชฏเช•เชฐ, เชœเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ€ เชฌเชนเชพเชฐ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡ เชคเซ‡เชจเชพ เช•เซเชทเซ‡เชคเซเชฐเซ‹เชฎเชพเช‚ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชธเชพเชฅเซ‡ เชคเชฎเชพเชฎ เชœเชฐเซ‚เชฐเซ€ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซ‡ เช•เซ…เชถ เช•เชฐเชตเชพเชฎเชพเช‚ เชชเชฃ เช…เชฐเซเชฅเชชเซ‚เชฐเซเชฃ เช›เซ‡.

เช†เชฎเชพเช‚ เชคเชฐเซเช• เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชœเซเชžเชพเชจ เช†เชชเชฃเชจเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‹ เช•เช‚เชˆเช• เชธเช‚เช•เชฒเชฟเชค เช…เชจเซ‡ เช•เซ‡เชถ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชคเซ‹ เชคเซ‡ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช.

เช†เช—เชณ เชœเซ‹เชคเชพเช‚, เชเชตเซเช‚ เช•เชนเซ‡เชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เช•เซ‡เชถเชฎเชพเช‚ เชคเซ‡เชจเชพ เชซเชพเชฏเชฆเชพ เช›เซ‡, เชญเชฒเซ‡ เชคเชฎเซ‡ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“เชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเชตเชพเชจเซ€ เชธเซ‚เชšเชฟเชค เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชจ เช•เชฐเซ‹. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช…เชนเซ€เช‚ เชนเซเช‚ เชซเช•เซเชค เชฒเซ‡เช–เชจเชพ เชฒเซ‡เช–เช•เชจเซ€ เชฅเซ€เชธเซ€เชธเชจเซเช‚ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซเช‚ เช›เซเช‚ เชœเซ‡เชจเซ‹ เชฎเซ‡เช‚ เช‰เชชเชฐ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซเชฏเซ‹ เช›เซ‡.

เชนเชตเซ‡ เช•เซ‹เชก เชตเชฟเชถเซ‡. เชšเชพเชฒเซ‹ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เชœเซ‹เชˆเช เชœเซ‡ เชฎเชพเชฐเซ€ เชคเชพเชœเซ‡เชคเชฐเชจเซ€ เชชเซ€เชกเชพ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เชœเซ‡เชจเซ‹ เชฎเชจเซ‡ เช—เช‚เชญเซ€เชฐ เช•เซเชฐเซ‡เชกเชฟเชŸ เชธเช‚เชธเซเชฅเชพเชจเชพ เช—เช‚เชญเซ€เชฐ เช‰เชคเซเชชเชพเชฆเชจเชฎเชพเช‚ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชนเชคเซ‹. เชฌเชงเซ€ เชธเช‚เชธเซเชฅเชพเช“ เช•เชพเชฒเซเชชเชจเชฟเช• เช›เซ‡ เชœเซ‡เชฅเซ€ เช•เซ‹เชˆ เช…เชจเซเชฎเชพเชจ เชจ เช•เชฐเซ‡.

เช…เชฎเซเช• เชธเชพเชฐ เช›เซ‡. เชธเช‚เชชเชฐเซเช• เชฅเชตเชพ เชฆเซ‹. เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชถเชฐเซ€เชฐ เชธเชพเชฅเซ‡เชจเชพ เช…เช•เซเชทเชฐเซ‹ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชชเชพเชฐเซเชธเชฐ เช…เชจเซ‡ เชนเชพเช‡เชกเซเชฐเซ‡เชŸเชฐ เช† เชธเชฎเชพเชจ เชธเช‚เชชเชฐเซเช•เซ‹ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชเช• เชชเชคเซเชฐ เช†เชตเซเชฏเซ‹, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชตเชพเช‚เชšเซเชฏเซ‹, เชคเซ‡เชจเซ‡ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชœเซ‹เชกเซ€เชฎเชพเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฟเชค เช•เชฐเซเชฏเซ‹, เชเช• เชธเช‚เชชเชฐเซเช• เชฌเชจเชพเชตเซเชฏเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชธเชพเชšเชตเซเชฏเซ‹.

เชคเซ‡ เชชเซเชฐเชพเชฅเชฎเชฟเช• เช›เซ‡. เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เชธเช‚เชชเชฐเซเช•เชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเชพเชฎ, เช‰เช‚เชฎเชฐ เช…เชจเซ‡ เชธเช‚เชชเชฐเซเช• เชซเซ‹เชจ เช—เซเชฃเชงเชฐเซเชฎเซ‹ เช›เซ‡. เช† เชกเซ‡เชŸเชพ เชชเชคเซเชฐเชฎเชพเช‚ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡. เชชเชคเซเชฐเชจเชพ เชฎเซเช–เซเชฏ เชญเชพเช—เชฎเชพเช‚ เชœเซ‹เชกเซ€เชฎเชพเช‚ เชเชจเซเชŸเชฟเชŸเซ€ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เชเชจเชพ เชฎเซ‡เชชเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชจเชตเซ€ เช•เซ€เชเชจเซ‡ เชเชกเชชเชฅเซ€ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅ เชฅเชตเชพ เชฎเชพเชŸเซ‡ เชตเซเชฏเชตเชธเชพเชฏ เชชเชฃ เชธเชฎเชฐเซเชฅเชจ เชฎเชพเช‚เช—เซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‹เชˆเช เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸเชฎเชพเช‚ เชŸเชพเชˆเชชเซ‹ เช•เชฐเซ€ เชนเซ‹เชฏ เช…เชฅเชตเชพ เชคเซ‹ เชฐเซ€เชฒเซ€เช เชชเชนเซ‡เชฒเชพ เชจเชตเชพ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เช…เชจเซเช•เซ‚เชฒเชจ เช•เชฐเซ€เชจเซ‡, เชจเชตเชพ เชญเชพเช—เซ€เชฆเชพเชฐ เชชเชพเชธเซ‡เชฅเซ€ เชฎเซ‡เชชเชฟเช‚เช—เชจเซ‡ เชคเชพเชคเซเช•เชพเชฒเชฟเช• เชฒเซ‹เช‚เชš เช•เชฐเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เชชเช›เซ€ เช…เชฎเซ‡ เชธเชธเซเชคเชพ เชกเซ‡เชŸเชพเชซเชฟเช•เซเชธ เชคเชฐเซ€เช•เซ‡ เชเช• เชจเชตเซ‹ เชฎเซ‡เชชเชฟเช‚เช— เชธเชนเชธเช‚เชฌเช‚เชง เช‰เชฎเซ‡เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช. เชเชŸเชฒเซ‡ เช•เซ‡ เชœเซ€เชตเชจเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ.

เช…เชฎเซ‡ เช…เชฎเชฒ เช•เชฐเซ€เช เช›เซ€เช, เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชนเซเช‚ เช•เซ‹เชก เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€เชถ เชจเชนเซ€เช‚: เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เชธเซเชฐเซ‹เชคเซ‹ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เชฒเชฟเช‚เช• เชฆเซเชตเชพเชฐเชพ GitHub เชชเชฐ เช‰เชชเชฒเชฌเซเชง เช›เซ‡. เชคเชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซ‡เชฎเชจเซ‡ เชฎเชพเชจเซเชฏเชคเชพเชจเซ€ เชฌเชนเชพเชฐ เชคเซเชฐเชพเชธ เช†เชชเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฎเชพเชชเซ€ เชถเช•เซ‹ เช›เซ‹, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชคเชฎเชพเชฐเชพ เช•เซ‡เชธเชฎเชพเช‚ เช…เชธเชฐ เช•เชฐเชถเซ‡. เชนเซเช‚ เชซเช•เซเชค เชฌเซ‡ เชจเชฎเซ‚เชจเชพ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช•เซ‹เชก เช†เชชเซ€เชถ เชœเซ‡ เชนเชพเช‡เชกเซเชฐเซ‡เชŸเชฐเชจเซ‡ เช…เชฒเช— เชชเชพเชกเซ‡ เช›เซ‡, เชœเซ‡ เชเชกเชชเซ€ เชนเซ‹เชตเชพเชจเซเช‚ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเชคเซเช‚ เชนเชคเซเช‚, เชนเชพเช‡เชกเซเชฐเซ‡เชŸเชฐเชฅเซ€, เชœเซ‡ เชงเซ€เชฎเซ€ เชนเซ‹เชตเชพเชจเซเช‚ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเชคเซเช‚ เชนเชคเซเช‚.

เชคเชฐเซเช• เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช›เซ‡: เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชชเชฆเซเชงเชคเชฟ เชฎเซ‚เชณเชญเซ‚เชค เชชเชพเชฐเซเชธเชฐ เชคเชฐเซเช• เชฆเซเชตเชพเชฐเชพ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชพเชฏเซ‡เชฒ เชœเซ‹เชกเซ€เช“ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡. LINQ เชธเซเชคเชฐ เช เชชเชพเชฐเซเชธเชฐ เช…เชจเซ‡ เชนเชพเช‡เชกเซเชฐเซ‡เชŸเชฐเชจเซเช‚ เชฎเซ‚เชณเชญเซ‚เชค เชคเชฐเซเช• เช›เซ‡, เชœเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเช‚เชฆเชฐเซเชญเชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเชพเชฐเซเชธเชฐเชจเซ€ เชœเซ‹เชกเซ€ เชธเชพเชฅเซ‡ เช•เซ€เชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ‡ เช›เซ‡ (เช† เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชธเชฐเช–เชพเชฎเชฃเซ€ เชฎเชพเชŸเซ‡ LINQ เชตเช—เชฐเชจเซ‹ เช•เซ‹เชก เช›เซ‡). เช†เช—เชณ, เชœเซ‹เชกเซ€เชจเซ‡ เชฎเซเช–เซเชฏ เชนเชพเช‡เชกเซเชฐเซ‡เชถเชจ เชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชœเซ‹เชกเซ€เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชเชจเซเชŸเชฟเชŸเซ€เชจเชพ เช…เชจเซเชฐเซ‚เชช เช—เซเชฃเชงเชฐเซเชฎเซ‹ เชชเชฐ เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

"เชเชกเชชเซ€" (เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช•เชฎเชพเช‚ เช‰เชชเชธเชฐเซเช— เชเชกเชชเซ€):

 protected override Contact GetContact(PropertyToValueCorrelation[] correlations)
        {
            var contact = new Contact();
            foreach (var setterMapItem in _proprtySettersMap)
            {
                var correlation = correlations.FirstOrDefault(x => x.PropertyName == setterMapItem.Key);
                setterMapItem.Value(contact, correlation?.Value);
            }
            return contact;
        }

เชœเซ‡เชฎ เช†เชชเชฃเซ‡ เชœเซ‹เชˆ เชถเช•เซ€เช เช›เซ€เช, เชธเซ‡เชŸเชฐ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เช เชธเชพเชฅเซ‡ เชธเซเชฅเชฟเชฐ เชธเช‚เช—เซเชฐเชนเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡ - เชธเช‚เช•เชฒเชฟเชค เชฒเซ‡เชฎเซเชฌเชกเชพเชธ เช•เซ‡ เชœเซ‡ เชธเซ‡เชŸเชฐ เชเชจเซเชŸเชฟเชŸเซ€ เช•เชนเซ‡ เช›เซ‡. เชจเซ€เชšเซ‡เชจเชพ เช•เซ‹เชก เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเซ‡เชฒ:

        static FastContactHydrator()
        {
            var type = typeof(Contact);
            foreach (var property in type.GetProperties())
            {
                _proprtySettersMap[property.Name] = GetSetterAction(property);
            }
        }

        private static Action<Contact, string> GetSetterAction(PropertyInfo property)
        {
            var setterInfo = property.GetSetMethod();
            var paramValueOriginal = Expression.Parameter(property.PropertyType, "value");
            var paramEntity = Expression.Parameter(typeof(Contact), "entity");
            var setterExp = Expression.Call(paramEntity, setterInfo, paramValueOriginal).Reduce();
            
            var lambda = (Expression<Action<Contact, string>>)Expression.Lambda(setterExp, paramEntity, paramValueOriginal);

            return lambda.Compile();
        }

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡. เช…เชฎเซ‡ เช—เซเชฃเชงเชฐเซเชฎเซ‹เชจเซ‡ เชชเชพเชฐ เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเช“ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เชœเซ‡ เชธเซ‡เชŸเชฐเชจเซ‡ เชฌเซ‹เชฒเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชธเชพเชšเชตเซ€เช เช›เซ€เช. เชชเช›เซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชซเซ‹เชจ เช•เชฐเซ€เช เช›เซ€เช.

"เชงเซ€เชฎเซ‹" (เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช•เชฎเชพเช‚ เชงเซ€เชฎเซ‹ เช‰เชชเชธเชฐเซเช—):

        protected override Contact GetContact(PropertyToValueCorrelation[] correlations)
        {
            var contact = new Contact();
            foreach (var property in _properties)
            {
                var correlation = correlations.FirstOrDefault(x => x.PropertyName == property.Name);
                if (correlation?.Value == null)
                    continue;

                property.SetValue(contact, correlation.Value);
            }
            return contact;
        }

เช…เชนเซ€เช‚ เช…เชฎเซ‡ เชคเชฐเชค เชœ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เชเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชธเซ‡เชŸเชตเซ‡เชฒเซเชฏเซเชจเซ‡ เชธเซ€เชงเซ‹ เช•เซ‰เชฒ เช•เชฐเซ€เช เช›เซ€เช.

เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡ เช…เชจเซ‡ เชธเช‚เชฆเชฐเซเชญ เชคเชฐเซ€เช•เซ‡, เชฎเซ‡เช‚ เชเช• เชจเชฟเชทเซเช•เชชเชŸ เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซเชฏเซ‹ เช›เซ‡ เชœเซ‡ เชคเซ‡เชฎเชจเชพ เชธเชนเชธเช‚เชฌเช‚เชง เชœเซ‹เชกเซ€เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเซ€เชงเชพ เชเชจเซเชŸเชฟเชŸเซ€ เชซเซ€เชฒเซเชกเชฎเชพเช‚ เชฒเช–เซ‡ เช›เซ‡. เช‰เชชเชธเชฐเซเช— - เชฎเซ‡เชจเซเชฏเซเช…เชฒ.

เชนเชตเซ‡ เชšเชพเชฒเซ‹ BenchmarkDotNet เชฒเชˆเช เช…เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ€เช. เช…เชจเซ‡ เช…เชšเชพเชจเช•... (เชฌเช—เชพเชกเชจเชพเชฐ - เช† เชธเชพเชšเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชจเชฅเซ€, เชตเชฟเช—เชคเซ‹ เชจเซ€เชšเซ‡ เช›เซ‡)

เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ‡ เชตเซ‡เช— เช†เชชเชตเชพ เชตเชฟเชถเซ‡เชจเซ‹ เช…เชธเชซเชณ เชฒเซ‡เช–

เช†เชชเชฃเซ‡ เช…เชนเซ€เช‚ เชถเซเช‚ เชœเซ‹เชˆเช เช›เซ€เช? เชเชกเชชเซ€ เช‰เชชเชธเชฐเซเช—เชจเซ‡ เชตเชฟเชœเชฏเซ€ เชฐเซ€เชคเซ‡ เชธเชนเชจ เช•เชฐเชคเซ€ เชชเชฆเซเชงเชคเชฟเช“ เชงเซ€เชฎเชพ เช‰เชชเชธเชฐเซเช— เชธเชพเชฅเซ‡เชจเซ€ เชชเชฆเซเชงเชคเชฟเช“ เช•เชฐเชคเชพเช‚ เชฒเช—เชญเช— เชคเชฎเชพเชฎ เชชเชพเชธเชฎเชพเช‚ เชงเซ€เชฎเซ€ เชนเซ‹เชฏ เช›เซ‡. เช† เชซเชพเชณเชตเชฃเซ€ เช…เชจเซ‡ เช•เชพเชฎเชจเซ€ เชเชกเชช เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เชธเชพเชšเซเช‚ เช›เซ‡. เชฌเซ€เชœเซ€ เชฌเชพเชœเซ, เชœเซเชฏเชพเช‚ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซเชฏเชพเช‚ เช† เชฎเชพเชŸเซ‡ เชฌเชจเชพเชตเชพเชฏเซ‡เชฒ LINQ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเซ‡เชชเชฟเช‚เช—เชจเซเช‚ เชธเซเช‚เชฆเชฐ เช…เชจเซ‡ เชญเชตเซเชฏ เช…เชฎเชฒเซ€เช•เชฐเชฃ, เชคเซ‡เชจเชพเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เช‰เชคเซเชชเชพเชฆเช•เชคเชพเชฎเชพเช‚ เช˜เชฃเซ‹ เช˜เชŸเชพเชกเซ‹ เช•เชฐเซ‡ เช›เซ‡. เชคเชซเชพเชตเชค เช“เชฐเซเชกเชฐเชจเซ‹ เช›เซ‡. เชชเชพเชธเชจเซ€ เชตเชฟเชตเชฟเชง เชธเช‚เช–เซเชฏเชพเช“ เชธเชพเชฅเซ‡ เชตเชฒเชฃ เชฌเชฆเชฒเชพเชคเซเช‚ เชจเชฅเซ€. เชคเชซเชพเชตเชค เชฎเชพเชคเซเชฐ เชธเซเช•เซ‡เชฒเชฎเชพเช‚ เช›เซ‡. LINQ เชธเชพเชฅเซ‡ เชคเซ‡ 4 - 200 เช—เชฃเซเช‚ เชงเซ€เชฎเซเช‚ เช›เซ‡, เชฒเช—เชญเช— เชธเชฎเชพเชจ เชธเซเช•เซ‡เชฒ เชชเชฐ เชตเชงเซ เช•เชšเชฐเซ‹ เช›เซ‡.

เชธเซเชงเชพเชฐเชพเชถเซ‡

เชฎเชจเซ‡ เชฎเชพเชฐเซ€ เช†เช‚เช–เซ‹ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เชจ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เชตเชงเซ เชฎเชนเชคเซเชคเซเชตเชจเซ€ เชตเชพเชค เช เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเชพ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‡ เชฎเชพเชฐเซ€ เช†เช‚เช–เซ‹ เช…เชฅเชตเชพ เชฎเชพเชฐเชพ เช•เซ‹เชก เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซเชฏเซ‹ เชจ เชนเชคเซ‹ - เชฆเชฟเชฎเชฟเชคเซเชฐเซ€ เชŸเซ€เช–เซ‹เชจเซ‹เชต 0x1000000. เชฎเชพเชฐเชพ เชธเซ‹เชฒเซเชฏเซเชถเชจเชจเซ‡ เชฌเซ‡ เชตเชพเชฐ เชคเชชเชพเชธเซเชฏเชพ เชชเช›เซ€, เชคเซ‡เชฃเซ‡ เชคเซ‡เชœเชธเซเชตเซ€ เชฐเซ€เชคเซ‡ เชถเซ‹เชงเซ€ เช•เชพเชขเซเชฏเซเช‚ เช…เชจเซ‡ เชเช• เชญเซ‚เชฒ เชฆเชฐเซเชถเชพเชตเซ€ เชœเซ‡ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เช˜เชฃเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชšเซ‚เช•เซ€ เช—เชˆ, เชชเซเชฐเชพเชฐเช‚เชญเชฟเช•เชฅเซ€ เช…เช‚เชคเชฟเชฎ. Moq เชธเซ‡เชŸเช…เชชเชฎเชพเช‚ เชฎเชณเซ‡เชฒ เชฌเช—เชจเซ‡ เช เซ€เช• เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชฌเชงเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชธเซเชฅเชพเชจเซ‡ เช†เชตเซ€ เช—เชฏเชพ. เชชเซเชจเชƒเชชเชฐเซ€เช•เซเชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช…เชจเซเชธเชพเชฐ, เชฎเซเช–เซเชฏ เชตเชฒเชฃ เชฌเชฆเชฒเชพเชคเซเช‚ เชจเชฅเซ€ - LINQ เชนเชœเซ เชชเชฃ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เช•เชฐเชคเชพเช‚ เชชเซเชฐเชญเชพเชตเชจเซ‡ เชตเชงเซ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชคเซ‡ เชธเชฐเชธ เช›เซ‡ เช•เซ‡ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เชธเช‚เช•เชฒเชจ เชธเชพเชฅเซ‡เชจเซเช‚ เช•เชพเชฐเซเชฏ เชจเชฟเชฐเชฐเซเชฅเช• เชฅเชฏเซเช‚ เชจเชฅเซ€, เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎ เชซเชพเชณเชตเชฃเซ€ เช…เชจเซ‡ เช…เชฎเชฒเชจเชพ เชธเชฎเชฏ เชฌเช‚เชจเซ‡เชฎเชพเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เชชเซเชฐเชฅเชฎ เชชเซเชฐเช•เซเชทเซ‡เชชเชฃ, เชœเซเชฏเชพเชฐเซ‡ เชธเซเชฅเชฟเชฐ เช•เซเชทเซ‡เชคเซเชฐเซ‹ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ "เชเชกเชชเซ€" เชชเชฆเซเชงเชคเชฟ เชฎเชพเชŸเซ‡ เช•เซเชฆเชฐเชคเซ€ เชฐเซ€เชคเซ‡ เชงเซ€เชฎเซ€ เชนเซ‹เชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชชเช›เซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชฌเชฆเชฒเชพเชฏ เช›เซ‡.

เช…เชนเซ€เช‚ เชฐเซ€เชŸเซ‡เชธเซเชŸเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช›เซ‡:

เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ‡ เชตเซ‡เช— เช†เชชเชตเชพ เชตเชฟเชถเซ‡เชจเซ‹ เช…เชธเชซเชณ เชฒเซ‡เช–

เชจเชฟเชทเซเช•เชฐเซเชท: เชเชจเซเชŸเชฐเชชเซเชฐเชพเช‡เชเชฎเชพเช‚ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชฏเซเช•เซเชคเชฟเช“เชจเซ‹ เช†เชถเชฐเซ‹ เชฒเซ‡เชตเชพเชจเซ€ เช•เซ‹เชˆ เช–เชพเชธ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ - LINQ เช‰เชคเซเชชเชพเชฆเช•เชคเชพ เชตเชงเซ เช–เชพเชˆ เชœเชถเซ‡. เชœเซ‹ เช•เซ‡, เช‰เชšเซเชš-เชฒเซ‹เชก เชชเชฆเซเชงเชคเชฟเช“เชฎเชพเช‚ เช•เซ‡ เชœเซ‡เชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เช›เซ‡, เชคเชฎเซ‡ เช‡เชจเชฟเชถเชฟเชฏเชฒเชพเช‡เชเชฐเซเชธ เช…เชจเซ‡ เชกเซ‡เชฒเชฟเช—เซ‡เชŸ เช•เชฎเซเชชเชพเช‡เชฒเชฐเซเชธเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌ เชธเชพเชšเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡ เชชเช›เซ€ "เชเชกเชชเซ€" เชคเชฐเซเช• เชชเซเชฐเชฆเชพเชจ เช•เชฐเชถเซ‡. เช† เชฐเซ€เชคเซ‡ เชคเชฎเซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชจเซ€ เชฒเชตเชšเซ€เช•เชคเชพ เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชเชกเชช เชฌเช‚เชจเซ‡ เชœเชพเชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช• เช•เซ‹เชก เช…เชนเซ€เช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡. เช•เซ‹เชˆเชชเชฃ เชฎเชพเชฐเชพ เชถเชฌเซเชฆเซ‹เชจเซ‡ เชฌเซ‡ เชตเชพเชฐ เชคเชชเชพเชธเซ€ เชถเช•เซ‡ เช›เซ‡:
เชนเซ‡เชฌเซเชฐเชพ เชฐเชฟเชซเซเชฒเซ‡เช•เซเชถเชจ เชŸเซ‡เชธเซเชŸ

PS: เชชเชฐเซ€เช•เซเชทเชฃเซ‹เชฎเชพเช‚เชจเซ‹ เช•เซ‹เชก IoC เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช•เซเชธเชฎเชพเช‚ เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฐเชšเชจเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เช…เช‚เชคเชฟเชฎ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เชฎเซ‡เช‚ เชคเชฎเชพเชฎ เชชเชฐเชฟเชฌเชณเซ‹เชจเซ‡ เช•เชพเชชเซ€ เชจเชพเช–เซเชฏเชพ เชœเซ‡ เชชเซเชฐเชญเชพเชตเชจเซ‡ เช…เชธเชฐ เช•เชฐเซ€ เชถเช•เซ‡ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเชจเซ‡ เช˜เซ‹เช‚เช˜เชพเชŸเซ€เชฏเชพ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡.

PPS: เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ เชฆเชฟเชฎเชฟเชคเซเชฐเซ€ เชŸเซ€เช–เซ‹เชจเซ‹เชต @0x1000000 Moq เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชพเชฐเซ€ เชญเซ‚เชฒ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡, เชœเซ‡เชฃเซ‡ เชชเซเชฐเชฅเชฎ เชฎเชพเชชเชจเซ‡ เช…เชธเชฐ เช•เชฐเซ€. เชตเชพเชšเช•เซ‹เชฎเชพเช‚เชฅเซ€ เช•เซ‹เชˆ เชชเชพเชธเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช•เชฐเซเชฎ เชนเซ‹เชฏ เชคเซ‹ เชฒเชพเชˆเช• เช•เชฐเซ‹. เชฎเชพเชฃเชธ เช…เชŸเช•เซเชฏเซ‹, เชฎเชพเชฃเชธเซ‡ เชตเชพเช‚เชšเซเชฏเซเช‚, เชฎเชพเชฃเชธเซ‡ เชฌเซ‡ เชตเชพเชฐ เชคเชชเชพเชธ เช•เชฐเซ€ เช…เชจเซ‡ เชญเซ‚เชฒ เชฌเชคเชพเชตเซ€. เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช† เช†เชฆเชฐ เช…เชจเซ‡ เชธเชนเชพเชจเซเชญเซ‚เชคเชฟเชจเซ‡ เชชเชพเชคเซเชฐ เช›เซ‡.

PPPS: เชเซ€เชฃเชตเชŸเชญเชฐเซเชฏเชพ เชตเชพเชšเช•เชจเซ‹ เช†เชญเชพเชฐ เช•เซ‡ เชœเซ‡เช“ เชถเซˆเชฒเซ€ เช…เชจเซ‡ เชกเชฟเชเชพเช‡เชจเชจเชพ เชคเชณเชฟเชฏเซ‡ เชชเชนเซ‹เช‚เชšเซเชฏเชพ. เชนเซเช‚ เชเช•เชฐเซ‚เชชเชคเชพ เช…เชจเซ‡ เชธเช—เชตเชก เชฎเชพเชŸเซ‡ เช›เซเช‚. เชชเซเชฐเชธเซเชคเซเชคเชฟเชจเซ€ เชฎเซเชคเซเชธเชฆเซเชฆเซ€เช—เซ€เชฐเซ€ เช‡เชšเซเช›เชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚ เช›เซ‹เชกเซ€ เชฆเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเซ‡เช‚ เชŸเซ€เช•เชพเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเซ€. เชนเซเช‚ เช…เชธเซเชคเซเชฐ เชฎเชพเชŸเซ‡ เชชเซ‚เช›เซเช‚ เช›เซเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹