ื ื™ื˜ ื’ืขืจืึธื˜ืŸ ืึทืจื˜ื™ืงืœ ื•ื•ืขื’ืŸ ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’

ืื™ืš ื•ื•ืขืœ ื’ืœื™ื™ืš ื“ืขืจืงืœืขืจืŸ ื“ืขื ื˜ื™ื˜ืœ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ. ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ ืคึผืœืึทืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ืฆื• ื’ืขื‘ืŸ ื’ื•ื˜, ืคืึทืจืœืึธื–ืœืขืš ืขืฆื” ื•ื•ื™ ืฆื• ืคืึทืจื’ื™ื›ืขืจืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืžื™ื˜ ืึท ืคึผืฉื•ื˜ ืึธื‘ืขืจ ืจืขืึทืœื™ืกื˜ื™ืฉ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึธื‘ืขืจ ื‘ืขืฉืึทืก ื‘ืขื ื˜ืฉืžืึทืจืงื™ื ื’ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืื™ื– ื ื™ืฉื˜ ืึทื–ื•ื™ ืคึผืึทืžืขืœืขืš ื•ื•ื™ ืื™ืš ื’ืขื“ืึทื ืง, LINQ ืื™ื– ืกืœืึธื•ืขืจ ื•ื•ื™ ืื™ืŸ ืžื™ื™ืŸ ื ื™ื™ื˜ืžืขืจื–. ืื‘ืขืจ ืฆื•ื ืกื•ืฃ ื”ืื˜ ื–ื™ืš ืืจื•ื™ืกื’ืขื•ื•ื™ื–ืŸ ืื– ืื™ืš ื”ืื‘ ืื•ื™ืš ื’ืขืžืื›ื˜ ื ื˜ืขื•ืช ืื™ืŸ ื“ื™ ืžื™ื“ื•ืช... ืคืจื˜ื™ื ืคื•ืŸ ื“ื™ ืœืขื‘ื ืก-ื’ืขืฉื™ื›ื˜ืข ื–ืขื ืขืŸ ืื•ื ื˜ืขืจ ื“ื™ ืฉื ื™ื™ื“ืŸ ืื•ืŸ ืื™ืŸ ื“ื™ ืงืืžืขื ื˜ืืจืŸ. ื–ื™ื ื˜ ื“ื™ ื‘ื™ื™ืฉืคึผื™ืœ ืื™ื– ื’ืึทื ืฅ ืคึผืจืึธืกื˜ ืื•ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ ื•ื•ื™ ืขืก ืื™ื– ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื’ืขื˜ืืŸ ืื™ืŸ ืึท ืคืึทืจื ืขืžื•ื ื’, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื’ืึทื ืฅ ื˜ืฉื™ืงืึทื•ื•ืข, ื•ื•ื™ ืขืก ืžื™ื™ื ื˜ ืฆื• ืžื™ืจ, ื“ืขืžืึทื ืกื˜ืจื™ื™ืฉืึทืŸ ืคื•ืŸ ืœืขื‘ืŸ: ื“ื™ ืคึผืจืึทืœ ืื•ื™ืฃ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ื˜ืขืžืข ืคื•ืŸ โ€‹โ€‹ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ื– ื’ืขื•ื•ืขืŸ ื ื™ื˜ ื‘ืืžืขืจืงื˜ ืจืขื›ื˜ ืฆื• ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืœืึธื’ื™ืง: Moq, Autofac, EF Core ืื•ืŸ ืื ื“ืขืจืข "ื‘ืึทื ื“ื™ื ื’ื–".

ืื™ืš ืื ื’ืขื”ื•ื™ื‘ืŸ ืืจื‘ืขื˜ืŸ ืื•ื ื˜ืขืจ ื“ืขื ืจื•ืฉื ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ: ืคืืจื•ื•ืืก ืื™ื– ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืคึผืึทืžืขืœืขืš

ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ื“ืขืจ ืžื—ื‘ืจ ืกืึทื’ื“ื–ืฉืขืกืฅ ื ื™ืฆืŸ ืงืึทืžืคึผื™ื™ืœื“ ื“ืขืœืึทื’ื™ื™ืฅ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื’ืœื™ื™ืš ืจื•ืคืŸ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ื˜ื™ืคึผ ืžืขื˜ื”ืึธื“ืก ื•ื•ื™ ืึท ื’ืจื•ื™ืก ื•ื•ืขื’ ืฆื• ื–ื™ื™ืขืจ ืคืึทืจื’ื™ื›ืขืจืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ืขืก ืื™ื–, ืคื•ืŸ ืงื•ืจืก, IL ื™ืžื™ืฉืึทืŸ, ืึธื‘ืขืจ ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ืขืก, ื•ื•ื™ื™ึทืœ ื“ืึธืก ืื™ื– ื“ื™ ืžืขืจืกื˜ ืึทืจื‘ืขื˜-ืื™ื ื˜ืขื ืกื™ื•ื•ืข ื•ื•ืขื’ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ืึทืจื‘ืขื˜, ื•ื•ืึธืก ืื™ื– ืคืจืึธื˜ ืžื™ื˜ ืขืจืจืึธืจืก.

ืงืึทื ืกื™ื“ืขืจื™ื ื’ ืึทื– ืื™ืš ื”ืึธื‘ืŸ ืฉื˜ืขื ื“ื™ืง ื’ืขื”ืืœื˜ืŸ ืึท ืขื ืœืขืš ืžื™ื™ื ื•ื ื’ ื•ื•ืขื’ืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’, ืื™ืš ื”ืื˜ ื ื™ืฉื˜ ื“ืขืจ ื”ื•ื™ืคึผื˜ ื‘ื“ืขื” ืฆื• ืคืจืขื’ืŸ ื“ืขื ืžื—ื‘ืจ ืก ืงืึทื ืงืœื•ื–ืฉืึทื ื–.

ืื™ืš ืึธืคื˜ ื˜ืจืขืคืŸ ื ืึทื™ื•ื• ื ื•ืฆืŸ ืคื•ืŸ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืื™ืŸ ื“ื™ ืคืึทืจื ืขืžื•ื ื’. ื“ืขืจ ื˜ื™ืคึผ ืื™ื– ื’ืขื ื•ืžืขืŸ. ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ืคืึทืจืžืึธื’ ืื™ื– ื’ืขื ื•ืžืขืŸ. ื“ื™ SetValue ืื•ืคึฟืŸ ืื™ื– ื’ืขืจื•ืคืŸ ืื•ืŸ ืึทืœืขืžืขืŸ ืคืจื™ื™ื˜ ื–ื™ืš. ื“ื™ ื•ื•ืขืจื˜ ืื™ื– ืื ื’ืขืงื•ืžืขืŸ ืื™ืŸ ื“ื™ ืฆื™ืœ ืคืขืœื“, ืึทืœืขืžืขืŸ ืื™ื– ืฆื•ืคืจื™ื“ืŸ. ื–ื™ื™ืขืจ ืงืœื•ื’ ืžืขื ื˜ืฉืŸ - ืกื™ื ื™ืขืจื– ืื•ืŸ ืžืึทื ืฉืึทืคึฟื˜ ืคื™ืจื˜ - ืฉืจื™ื™ึทื‘ืŸ ื–ื™ื™ืขืจ ื™ืงืกื˜ืขื ืฉืึทื ื– ืฆื• ืึทื‘ื“ื–ืฉืขืงืฅ, ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึทื–ืึท ืึท ื ืึทื™ื•ื• ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ "ื•ื ื™ื•ื•ืขืจืกืึทืœ" ืžืึทืคึผืคึผืขืจืก ืคื•ืŸ ืื™ื™ืŸ ื˜ื™ืคึผ ืฆื• ืื ื“ืขืจืŸ. ื“ื™ ืขืกืึทื ืก ืื™ื– ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื“ืึธืก: ืžื™ืจ ื ืขืžืขืŸ ืึทืœืข ื“ื™ ืคืขืœื“ืขืจ, ื ืขืžืขืŸ ืึทืœืข ื“ื™ ืคึผืจืึธืคึผืขืจื˜ื™ืขืก, ื™ื˜ืขืจื™ื™ื˜ ืื™ื‘ืขืจ ื–ื™ื™: ืื•ื™ื‘ ื“ื™ ื ืขืžืขืŸ ืคื•ืŸ ื“ื™ ื˜ื™ืคึผ ืžื™ื˜ื’ืœื™ื“ืขืจ ื’ืœื™ื™ึทื›ืŸ, ืžื™ืจ ื•ื™ืกืคื™ืจืŸ SetValue. ืคื•ืŸ ืฆื™ื™ื˜ ืฆื• ืฆื™ื™ื˜ ื›ืืคืŸ ืžื™ืจ ืื•ื™ืกื ืืžืขืŸ ืฆื•ืœื™ื‘ ื˜ืขื•ืชื™ื ื•ื•ืื• ืžื™ืจ ื”ืื‘ืŸ ื ื™ืฉื˜ ื’ืขืคื•ื ืขืŸ ืขืคืขืก ืคืืจืžืขื’ืŸ ืื™ืŸ ืื™ื™ื ืขื ืคื•ืŸ ื“ื™ ื˜ื™ืคืŸ, ืื‘ืขืจ ืืคื™ืœื• ื“ื ืื™ื– ื“ื ื ืื•ื™ืกื•ื•ืขื’ ื•ื•ืืก ืคืืจื‘ืขืกืขืจื˜ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’. ืคึผืจื•ึผื•ื•ื˜ / ื›ืึทืคึผืŸ.

ืื™ืš ื”ืื‘ ื’ืขื–ืขืŸ ืžืขื ื˜ืฉืŸ ืจื™ื™ื ื•ื•ืขื ื˜ ื“ื™ ืคึผืึทืจืกืขืจื– ืื•ืŸ ืžืึทืคึผืขืจื– ืึธืŸ ื–ื™ื™ืŸ ื’ืึธืจ ืึทืจืžื“ ืžื™ื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื•ื•ื™ ื“ื™ ืžืืฉื™ื ืขืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขืงื•ืžืขืŸ ืื™ื™ื“ืขืจ ื–ื™ื™ ืึทืจื‘ืขื˜. ืื™ืš ื”ืึธื‘ ื’ืขื–ืขืŸ ืžืขื ื˜ืฉืŸ ื‘ืึทื”ืึทืœื˜ืŸ ื–ื™ื™ืขืจ ื ืึทื™ื•ื• ื™ืžืคึผืœืึทืžืึทื ืฅ ื”ื™ื ื˜ืขืจ ืกื˜ืจืึทื˜ืขื’ื™ืขืก, ื”ื™ื ื˜ืขืจ ื™ื ื˜ืขืจืคื™ื™ืกื™ื–, ื”ื™ื ื˜ืขืจ ื™ื ื“ื–ืฉืขืงืฉืึทื ื–, ื•ื•ื™ ืื•ื™ื‘ ื“ืึธืก ื•ื•ืึธืœื˜ ืึทื ื˜ืฉื•ืœื“ื™ืงืŸ ื“ื™ ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ื‘ืึทืงื˜ืฉืึทื ืึทืœื™ืึท. ืื™ ืš ื”ื ื‘ ื“ ื™ ื ืื– , ืื•ื™ ืฃ ืื–ืขืœื› ืข ืจืขืืœื™ื–ืืฆื™ืขืก . ืื™ืŸ ืคืึทืงื˜, ืื™ืš ื”ืื˜ ื ื™ืฉื˜ ืžืขืกื˜ืŸ ื“ื™ ืคืึทืงื˜ื™ืฉ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืจื™ื ืขืŸ, ืื•ืŸ, ืื•ื™ื‘ ืžืขื’ืœืขืš, ืื™ืš ืคืฉื•ื˜ ื˜ืฉื™ื™ื ื“ื–ืฉื“ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืฆื• ืึท ืžืขืจ "ืึธืคึผื˜ื™ืžืึทืœ" ืื•ื™ื‘ ืื™ืš ืงืขืŸ ื‘ืึทืงื•ืžืขืŸ ืžื™ื™ืŸ ื”ืขื ื˜ ืื•ื™ืฃ ืขืก. ื“ืขืจื™ื‘ืขืจ, ื“ื™ ืขืจืฉื˜ืขืจ ืžืขื–ืฉืขืจืžืึทื ืฅ ื“ื™ืกืงืึทืกื˜ ืื•ื ื˜ืŸ ืขืžืขืก ืฆืขืžื™ืฉื˜ ืžื™ืจ.

ืื™ืš ื˜ืจืึทื›ื˜ืŸ ืคื™ืœืข ืคื•ืŸ โ€‹โ€‹ืื™ืจ, ืœื™ื™ืขื ืขืŸ Richter ืึธื“ืขืจ ืื ื“ืขืจืข ืื™ื“ืขืึธืœืึธื’ื™ืกืฅ, โ€‹โ€‹ื”ืึธื‘ืŸ ื’ืขืคึฟื•ื ืขืŸ ืึท ื’ืึธืจ ืฉื™ื™ืŸ ื“ืขืจืงืœืขืจื•ื ื’ ืึทื– ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืื™ืŸ ืงืึธื“ ืื™ื– ืึท ื“ืขืจืฉื™ื™ื ื•ื ื’ ื•ื•ืึธืก ื”ืื˜ ืึท ื’ืึธืจ ื ืขื’ืึทื˜ื™ื•ื• ืคึผืจืึทืœ ืื•ื™ืฃ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ืจื•ืคืŸ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืคืึธืจืกืขืก ื“ื™ 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;
        }

ื“ืึธ ืžื™ืจ ืžื™ื“ ื‘ื™ื™ืคึผืึทืก ื“ื™ ืคึผืจืึธืคึผืขืจื˜ื™ืขืก ืื•ืŸ ืจื•ืคืŸ SetValue ื’ืœื™ื™ึทืš.

ืคึฟืึทืจ ืงืœืขืจื™ื˜ื™ ืื•ืŸ ื•ื•ื™ ืึท ืจืขืคึฟืขืจืขื ืฅ, ืื™ืš ื™ืžืคึผืœืึทืžืขื ืึทื“ ืึท ื ืึทื™ื•ื• ืื•ืคึฟืŸ ื•ื•ืึธืก ืฉืจื™ื™ื‘ื˜ ื“ื™ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ื–ื™ื™ืขืจ ืงืึธืจืึทืœื™ื™ืฉืึทืŸ ืคึผืขืจื– ื’ืœื™ื™ึทืš ืื™ืŸ ื“ื™ ืขื ื˜ื™ื˜ื™ ืคืขืœื“ืขืจ. ืคึผืจืขืคื™ืงืก - ืžืึทื ื•ืึทืœ.

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ื ืขืžืขืŸ BenchmarkDotNet ืื•ืŸ ื•ื ื˜ืขืจื–ื•ื›ืŸ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’. ืื•ืŸ ืคึผืœื•ืฆืœื™ื ื’... (ืกืคึผื•ื™ืœืขืจ - ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื“ื™ ืจื™ื›ื˜ื™ืง ืจืขื–ื•ืœื˜ืึทื˜, ืคึผืจื˜ื™ื ื–ืขื ืขืŸ ืื•ื ื˜ืŸ)

ื ื™ื˜ ื’ืขืจืึธื˜ืŸ ืึทืจื˜ื™ืงืœ ื•ื•ืขื’ืŸ ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’

ื•ื•ืึธืก ื˜ืึธืŸ ืžื™ืจ ื–ืขืŸ ื“ืึธ? ืžืขื˜ื”ืึธื“ืก ื•ื•ืึธืก ื˜ืจื™ื•ืžืคืึทื ื˜ืœื™ ื˜ืจืึธื’ืŸ ื“ื™ ืคืึทืกื˜ ืคึผืจืขืคื™ืงืก ื–ืขื ืขืŸ ืกืœืึธื•ืขืจ ืื™ืŸ ื›ึผืžืขื˜ ืึทืœืข ืคึผืึทืกื™ื– ื•ื•ื™ ืžืขื˜ื”ืึธื“ืก ืžื™ื˜ ื“ื™ ืกืœืึธื• ืคึผืจืขืคื™ืงืก. ื“ืึธืก ืื™ื– ืืžืช ืคึฟืึทืจ ื‘ื™ื™ื“ืข ืึทืœืึทืงื™ื™ืฉืึทืŸ ืื•ืŸ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืึทืจื‘ืขื˜. ืื•ื™ืฃ ื“ื™ ืื ื“ืขืจืข ื”ืึทื ื˜, ืึท ืฉื™ื™ืŸ ืื•ืŸ ืขืœืขื’ืึทื ื˜ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืžืึทืคึผื™ื ื’ ื ื™ืฆืŸ LINQ ืžืขื˜ื”ืึธื“ืก ื‘ื“ืขื” ืคึฟืึทืจ ื“ืขื ื•ื•ื• ื ืึธืจ ืžืขื’ืœืขืš, ืื•ื™ืฃ ื“ื™ ืคืึทืจืงืขืจื˜, ื–ื™ื™ืขืจ ืจืึทื“ื•ืกืึทื– ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™. ื“ืขืจ ื—ื™ืœื•ืง ืื™ื– ืคื•ืŸ ืกื“ืจ. ื“ืขืจ ื’ืึทื ื’ ื˜ื•ื˜ ื ื™ืฉื˜ ื˜ื•ื™ืฉืŸ ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ื ื•ืžืขืจืŸ ืคื•ืŸ ืคึผืึทืกื™ื–. ื“ืขืจ ื‘ืœื•ื™ื– ื—ื™ืœื•ืง ืื™ื– ืื™ืŸ ื•ื•ืึธื’. ืžื™ื˜ LINQ ืขืก ืื™ื– 4-200 ืžืืœ ืกืœืึธื•ืขืจ, ืขืก ืื™ื– ืžืขืจ ืžื™ืกื˜ ืื•ื™ืฃ ื‘ืขืขืจืขืš ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืึธื’.

UPDATED

ืื™ืš ื”ืึธื‘ ื ื™ื˜ ื’ืขื’ืœื•ื™ื‘ื˜ ืžื™ื™ืŸ ืื•ื™ื’ืŸ, ืึธื‘ืขืจ ืžืขืจ ื™ืžืคึผืึธืจื˜ืึทื ื˜ืœื™, ืื•ื ื“ื–ืขืจ ืงืึธืœืขื’ืข ื”ืื˜ ื ื™ื˜ ื’ืœื•ื™ื‘ืŸ ืžื™ื™ืŸ ืื•ื™ื’ืŸ ืึธื“ืขืจ ืžื™ื™ืŸ ืงืึธื“ - ื“ืžื™ื˜ืจื™ ื˜ื™ื›ืึธื ืึธื•ื• 0x1000000. ื ืึธืš ื˜ืึธืคึผืœ-ืึธืคึผื’ืขืฉื˜ืขืœื˜ ืžื™ื™ืŸ ืœื™ื™ื–ื•ื ื’, ืขืจ ื‘ืจื™ืœื™ืึทื ื˜ืœื™ ื“ื™ืกืงืึทื•ื•ืขืจื“ ืื•ืŸ ืื ื’ืขื•ื•ื™ื–ืŸ ืึท ื˜ืขื•ืช ื•ื•ืึธืก ืื™ืš ืžื™ืกื˜ ืจืขื›ื˜ ืฆื• ืึท ื ื•ืžืขืจ ืคื•ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ, ืขืจืฉื˜ ืฆื• ืœืขืฆื˜. ื ืึธืš ืคื™ืงืกื™ืจ ื“ื™ ื’ืขืคึฟื•ื ืขืŸ ื–ืฉื•ืง ืื™ืŸ ื“ื™ ืžืึธืง ืกืขื˜ืึทืคึผ, ืึทืœืข ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื’ืขืคืืœืŸ ืื™ืŸ ืคึผืœืึทืฅ. ืœื•ื™ื˜ ื“ื™ ืจืขื˜ืขืกื˜ ืจืขื–ื•ืœื˜ืื˜ืŸ, ื“ืขืจ ื”ื•ื™ืคึผื˜ ื’ืึทื ื’ ื˜ื•ื˜ ื ื™ืฉื˜ ื˜ื•ื™ืฉืŸ - LINQ ื ืึธืš ืึทืคืขืงืฅ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืžืขืจ ื•ื•ื™ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’. ืึธื‘ืขืจ, ืขืก ืื™ื– ืคื™ื™ึทืŸ ืึทื– ื“ื™ ืึทืจื‘ืขื˜ ืžื™ื˜ ืขืงืกืคึผืจืขืกืกื™ืึธืŸ ื–ืึทืžืœื•ื ื’ ืื™ื– ื ื™ืฉื˜ ื’ืขื˜ืืŸ ืื™ืŸ ืึทืจื•ื™ืกื’ืขื•ื•ืึธืจืคืŸ, ืื•ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ืงืขื ื˜ื™ืง ืื™ืŸ ืึทืœืึทืงื™ื™ืฉืึทืŸ ืื•ืŸ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืฆื™ื™ื˜. ื“ืขืจ ืขืจืฉื˜ืขืจ ืงืึทื˜ืขืจ, ื•ื•ืขืŸ ืกื˜ืึทื˜ื™ืง ืคืขืœื“ืขืจ ื–ืขื ืขืŸ ื™ื ื™ืฉืึทืœื™ื™ื–ื“, ืื™ื– ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš ืกืœืึธื•ืขืจ ืคึฟืึทืจ ื“ื™ "ืฉื ืขืœ" ืื•ืคึฟืŸ, ืึธื‘ืขืจ ื“ืขืžืึธืœื˜ ื“ื™ ืกื™ื˜ื•ืึทืฆื™ืข ืขื ื“ืขืจื•ื ื’ืขืŸ.

ื“ืึธ ืื™ื– ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืจื™ื˜ืขืกื˜:

ื ื™ื˜ ื’ืขืจืึธื˜ืŸ ืึทืจื˜ื™ืงืœ ื•ื•ืขื’ืŸ ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’

ืžืกืงื ื: ื•ื•ืขืŸ ืื™ืจ ื ื•ืฆืŸ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืื™ืŸ ืึท ืคืึทืจื ืขืžื•ื ื’, ืขืก ืื™ื– ืงื™ื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ ื ื•ื™ื˜ ืฆื• ืจื™ื–ืึธืจื˜ ืฆื• ื˜ืจื™ืงืก - LINQ ื•ื•ืขื˜ ืคืึทืจื’ืจืขืกืขืจืŸ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™ ืžืขืจ. ืึธื‘ืขืจ, ืื™ืŸ ื”ื•ื™ืš-ืžืึทืกืข ืžืขื˜ื”ืึธื“ืก ื•ื•ืึธืก ื“ืึทืจืคืŸ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ, ืื™ืจ ืงืขื ืขืŸ ืจืึทื˜ืขื•ื•ืขืŸ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ื™ื ื™ื˜ื™ืึทืœื™ื™ื–ืขืจื– ืื•ืŸ ื“ืขืœืขื’ืึทื˜ ืงืึธืžืคึผื™ืœืขืจืก, ื•ื•ืึธืก ื•ื•ืขื˜ ืฆื•ืฉื˜ืขืœืŸ "ืฉื ืขืœ" ืœืึธื’ื™ืง. ื“ืขื ื•ื•ืขื’ ืื™ืจ ืงืขื ืขืŸ ื”ืึทืœื˜ืŸ ื‘ื™ื™ื“ืข ื“ื™ ื‘ื™ื™ื’ื™ืงื™ื™ื˜ ืคื•ืŸ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’ ืื•ืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ื“ื™ ื‘ืขื ื˜ืฉืžืึทืจืง ืงืึธื“ ืื™ื– ื‘ื ื™ืžืฆื ื“ืึธ. ื•ื•ืขืจ ืขืก ื™ื– ืงืขื ืขืŸ ื˜ืึธืคึผืœ ื˜ืฉืขืง ืžื™ื™ืŸ ื•ื•ืขืจื˜ืขืจ:
HabraReflectionTests

ืคึผืก: ื“ืขืจ ืงืึธื“ ืื™ืŸ ื“ื™ ื˜ืขืกืฅ ื ื™ืฆื˜ IoC, ืื•ืŸ ืื™ืŸ ื“ื™ ื‘ืขื ื˜ืฉืžืึทืจืงืก ืขืก ื ื™ืฆื˜ ืึท ื™ืงืกืคึผืœื™ืกืึทื˜ ืงืึทื ืกื˜ืจืึทืงื˜. ื“ืขืจ ืคืึทืงื˜ ืื™ื– ืึทื– ืื™ืŸ ื“ื™ ืœืขืฆื˜ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืื™ืš ืฉื ื™ื™ึทื“ืŸ ืึทื•ื•ืขืง ืึทืœืข ืกื™ื‘ื•ืช ื•ื•ืึธืก ืงืขืŸ ื•ื•ื™ืจืงืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื•ืŸ ืžืึทื›ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ื˜ื•ืžืœื“ื™ืง.

PPS: ื“ืึทื ืง ืฆื• ื“ื™ ื‘ืึทื ื™ืฆืขืจ ื“ืžื™ื˜ืจื™ ื˜ื™ื›ืึธื ืึธื•ื• @ 0x1000000 ืคึฟืึทืจ ื“ื™ืกืงืึทื•ื•ืขืจื“ ืžื™ื™ืŸ ื˜ืขื•ืช ืื™ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ Moq, ื•ื•ืึธืก ืึทืคืขืงื˜ืึทื“ ื“ื™ ืขืจืฉื˜ืขืจ ืžืขื–ืฉืขืจืžืึทื ืฅ. ืื•ื™ื‘ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืœื™ื™ืขื ืขืจ ื”ืื˜ ื’ืขื ื•ื’ ืงืึทืจืžืึท, ื‘ื™ื˜ืข ื•ื•ื™ ืขืก. ื“ืขืจ ืžืืŸ ื”ืื˜ ื–ื™ืš ืืคื’ืขืฉื˜ืขืœื˜, ื“ืขืจ ืžืืŸ ื”ืื˜ ื’ืขืœื™ื™ืขื ื˜, ื“ืขืจ ืžืืŸ ื”ืื˜ ื“ืื‘ืœ ื’ืขื–ื•ื›ื˜ ืื•ืŸ ืื ื’ืขืฐื™ื–ืŸ ื“ืขื ื˜ืขื•ืช. ืื™ืš ื˜ืจืึทื›ื˜ืŸ ื“ืึธืก ืื™ื– ื•ื•ืขืจื˜ ืคื•ืŸ ืจืขืกืคึผืขืงื˜ ืื•ืŸ ืกื™ืžืคึผืึทื˜ื™.

PPPS: ื“ืึทื ืง ืฆื• ื“ื™ ืžืึทื˜ื™ืงื™ืึทืœืึทืก ืœื™ื™ืขื ืขืจ ื•ื•ืึธืก ื’ืึทื˜ ืฆื• ื“ื™ ื“ื ืึธ ืคื•ืŸ ื“ื™ ื ื•ืกื— ืื•ืŸ ืคึผืœืึทืŸ. ืื™ืš ื‘ื™ืŸ ืคึฟืึทืจ ื™ื•ื ืึทืคืึธืจืžืึทื˜ื™ ืื•ืŸ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก. ื“ื™ ื“ื™ืคึผืœืึธื•ืžืึทืกื™ ืคื•ืŸ ื“ืขืจ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืœืึธื–ืŸ ืคื™ืœ ืฆื• ื–ื™ื™ืŸ ื’ืขื•ื•ืืœื˜, ืึธื‘ืขืจ ืื™ืš ื’ืขื ื•ืžืขืŸ ื“ื™ ืงืจื™ื˜ื™ืง ืื™ืŸ ื—ืฉื‘ื•ืŸ. ืื™ืš ื‘ืขื˜ ืคึฟืึทืจ ื“ื™ ืคึผืจืึทื“ื–ืฉืขืงื˜ืึทืœ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’