αž’αžαŸ’αžαž”αž‘αž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™αž’αŸ†αž–αžΈαž€αžΆαžšαž–αž“αŸ’αž›αžΏαž“αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„

αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž–αž“αŸ’αž™αž›αŸ‹αž–αžΈαž…αŸ†αžŽαž„αž‡αžΎαž„αž’αžαŸ’αžαž”αž‘αž—αŸ’αž›αžΆαž˜αŸ—αŸ” αž•αŸ‚αž“αž€αžΆαžšαžŠαžΎαž˜αž‚αžΊαž•αŸ’αžαž›αŸ‹αžŠαŸ†αž”αžΌαž“αŸ’αž˜αžΆαž“αž›αŸ’αž’ αž“αž·αž„αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž‘αžΆαž αžšαžŽαŸαžŸαžΆαž˜αž‰αŸ’αž‰ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαžœαžΆαžŸαŸ‹αžœαŸ‚αž„ αžœαžΆαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž˜αž·αž“αž™αžΊαžαžŠαžΌαž…αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‚αž·αžαž‘αŸ LINQ αž‚αžΊαž™αžΊαžαž‡αžΆαž„αžŸαž»αž”αž·αž“αŸ’αžαž’αžΆαž€αŸ’αžšαž€αŸ‹αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹ αžœαžΆαž”αžΆαž“αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αžαžΆαžαŸ’αž‰αž»αŸ†αž€αŸαž˜αžΆαž“αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžœαžΆαžŸαŸ‹αžœαŸ‚αž„... αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž“αŸƒαžšαžΏαž„αžšαŸ‰αžΆαžœαž‡αžΈαžœαž·αžαž“αŸαŸ‡αž‚αžΊαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž€αžΆαžαŸ‹αž αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αŸ” αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž§αž‘αžΆαž αžšαžŽαŸαž“αŸαŸ‡αž‚αžΊαž‡αžΆαžšαžΏαž„αž’αž˜αŸ’αž˜αžαžΆαž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŠαžΌαž…αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž αž‚αŸ’αžšαžΆαžŸαž˜αž½αž™αžœαžΆαž”αžΆαž“αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžŽαžΆαžŸαŸ‹αžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžαŸ’αž‰αž»αŸ† αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž‡αžΈαžœαž·αž: αž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αž›αžΎαž›αŸ’αž”αžΏαž“αž“αŸƒαž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž’αžαŸ’αžαž”αž‘αž‚αžΊ αž˜αž·αž“αž’αžΆαž…αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž”αžΆαž“αž‘αŸαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ…: Moq, Autofac, EF Core αž“αž·αž„ "αž€αŸ’αžšαž»αž˜αžαž“αŸ’αžšαŸ’αžαžΈ" αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αžαŸ’αž‰αž»αŸ†αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαž€αŸ’αžšαŸ„αž˜αž…αŸ†αžŽαžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž“αŸƒαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αŸ– αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž™αžΊαž

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰ αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αžŸαŸ’αž“αžΎαž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž—αžΌαžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αž‡αžΆαž‡αžΆαž„αž€αžΆαžšαž αŸ…αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αžΌαžœαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž”αŸ’αžšαž—αŸαž‘αž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž‡αžΆαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŠαŸαž›αŸ’αž’αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹αž˜αžΆαž“αž€αžΆαžšαž”αŸ†αž—αžΆαž™ IL αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž‡αŸ€αžŸαžœαžΆαž„αžœαžΆ αž–αŸ’αžšαŸ„αŸ‡αž“αŸαŸ‡αž‡αžΆαžœαž·αž’αžΈαžŠαŸ‚αž›αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αž˜αŸ’αž›αžΆαŸ†αž„αž–αž›αž€αž˜αŸ’αž˜αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž„αžΆαžš αžŠαŸ‚αž›αžœαžΆαž–αŸ„αžšαž–αŸαž‰αžŠαŸ„αž™αž€αŸ†αž αž»αžŸαŸ”

αžŠαŸ„αž™αž–αž·αž…αžΆαžšαžŽαžΆαžαžΆαžαŸ’αž‰αž»αŸ†αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž‚αŸ†αž“αž·αžαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž’αŸ†αž–αžΈαž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„ αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž˜αžΆαž“αž”αŸ†αžŽαž„αž–αž·αžŸαŸαžŸαžŠαžΎαž˜αŸ’αž”αžΈαžŸαž½αžšαž€αžΆαžšαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž“αŸ„αŸ‡αž‘αŸαŸ”

αž‡αžΆαžšαžΏαž™αŸ—αžαŸ’αž‰αž»αŸ†αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž€αžΆαžšαž”αŸ’αžšαžΎαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αžŠαŸ„αž™αž†αŸ„αžαž›αŸ’αž„αž„αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž αž‚αŸ’αžšαžΆαžŸαŸ” αž”αŸ’αžšαž—αŸαž‘αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αŸ” αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš SetValue αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ αž αžΎαž™αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαžšαžΈαž€αžšαžΆαž™αŸ” αžαž˜αŸ’αž›αŸƒαž”αžΆαž“αž˜αž€αžŠαž›αŸ‹αžœαžΆαž›αž‚αŸ„αž›αžŠαŸ… αž’αŸ’αž“αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαžŸαž”αŸ’αž”αžΆαž™αž…αž·αžαŸ’αžαŸ” αž˜αž“αž»αžŸαŸ’αžŸαž†αŸ’αž›αžΆαžαžŽαžΆαžŸαŸ‹ - αž˜αž“αž»αžŸαŸ’αžŸαž…αžΆαžŸαŸ‹ αž“αž·αž„αž’αŸ’αž“αž€αžŠαžΉαž€αž“αžΆαŸ†αž€αŸ’αžšαž»αž˜ - αžŸαžšαžŸαŸαžšαž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ†αž‘αžΆαžŸαŸ‹ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αŸ‚αž”αž†αŸ„αžαž›αŸ’αž„αž„αŸ‹ "αž‡αžΆαžŸαž€αž›" αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž•αŸ‚αž“αž‘αžΈαž–αžΈαž”αŸ’αžšαž—αŸαž‘αž˜αž½αž™αž‘αŸ…αž”αŸ’αžšαž—αŸαž‘αž˜αž½αž™αž‘αŸ€αžαŸ” αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž‚αžΊαŸ– αž™αžΎαž„αž™αž€αžœαžΆαž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž™αž€αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž’αŸ’αžœαžΎαž˜αŸ’αžαž„αž‘αŸ€αžαž›αžΎαž–αž½αž€αžœαžΆαŸ– αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αžŸαž˜αžΆαž‡αž·αž€αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆ αž™αžΎαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· SetValue αŸ” αž–αžΈαž–αŸαž›αž˜αž½αž™αž‘αŸ…αž–αŸαž›αž˜αž½αž™ αž™αžΎαž„αž…αžΆαž”αŸ‹αž”αžΆαž“αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž—αŸαž‘αžŽαžΆαž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž€αŸαž˜αžΆαž“αžœαž·αž’αžΈαžŠαŸ‚αž›αž’αŸ’αžœαžΎαž’αŸ„αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ” αžŸαžΆαž€αž›αŸ’αž”αž„/αž…αžΆαž”αŸ‹αŸ”

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžƒαžΎαž‰αž˜αž“αž»αžŸαŸ’αžŸαž”αž„αŸ’αž€αžΎαžαž§αž”αž€αžšαžŽαŸαž‰αŸ‚αž€ αž“αž·αž„αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž•αŸ‚αž“αž‘αžΈαž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž˜αž·αž“αž˜αžΆαž“αž’αžΆαžœαž»αž’αž–αŸαž‰αž›αŸαž‰αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž˜αž€αž˜αž»αž“αž–αž½αž€αž‚αŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžƒαžΎαž‰αž˜αž“αž»αžŸαŸ’αžŸαž›αžΆαž€αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸαž†αŸ„αžαž›αŸ’αž„αž„αŸ‹αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž™αž»αž‘αŸ’αž’αžŸαžΆαžŸαŸ’αžšαŸ’αž αž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ αž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž€αžΆαžšαž…αžΆαž€αŸ‹ αžŠαžΌαž…αž‡αžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž“αŸαŸ‡αž“αžΉαž„αžŠαŸ„αŸ‡αžŸαžΆαžšαž…αŸ†αž–αŸ„αŸ‡ bacchanalia αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αžΎαž€αž…αŸ’αžšαž˜αž»αŸ‡αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αŸ…αž–αŸαž›αžŠαžΉαž„αž€αžΆαžšαž–αž·αžαž”αŸ‚αž”αž“αŸαŸ‡αŸ” αžαžΆαž˜αž–αž·αžαž‘αŸ… αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αžΆαž“αžœαžΆαžŸαŸ‹αžŸαŸ’αž‘αž„αŸ‹αž€αžΆαžšαž›αŸαž…αž’αŸ’αž›αžΆαž™αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž‘αŸ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αžαŸ’αž‰αž»αŸ†αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‘αŸ…αž‡αžΆ "αž›αŸ’αž’αž”αŸ†αž•αž»αž" αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž…αžΆαž”αŸ‹αžŠαŸƒαžαŸ’αž‰αž»αŸ†αž”αžΆαž“αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž€αžΆαžšαžœαžΆαžŸαŸ‹αžœαŸ‚αž„αžŠαŸ†αž”αžΌαž„αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž’αŸ’αžœαžΎαž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αž™αž›αŸ‹αž…αŸ’αžšαž‘αŸ†αž™αŸ‰αžΆαž„αž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαŸ”

αžαŸ’αž‰αž»αŸ†αž‚αž·αžαžαžΆαž’αŸ’αž“αž€αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž’αžΆαž“ Richter αž¬αž’αŸ’αž“αž€αž˜αž“αŸ„αž‚αž˜αžœαž·αž‡αŸ’αž‡αžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αžŠαŸ‚αž›αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž‚αžΊαž‡αžΆαž”αžΆαžαž»αž—αžΌαžαžŠαŸ‚αž›αž˜αžΆαž“αž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αž’αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž›αžΎαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž€αžΆαžšαž αŸ…αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž”αž„αŸ’αžαŸ†αž±αŸ’αž™ CLR αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž€αžΆαžš αž‘αžΆαž‰αž™αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž‰αŸ‚αž€αž–αž½αž€αžœαžΆαŸ”αž›αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž‡αžΆαŸ†αž„αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžαžΆαž˜αž›αŸ†αžŠαžΆαž”αŸ‹αž›αŸ†αžŠαŸ„αž™αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž“αŸƒαž€αžΆαžšαž…αž„αž…αžΆαŸ†αž™αŸ‰αžΆαž„αž…αŸ’αžšαžΎαž“αŸ” αž™αžΎαž„αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† αž αžΎαž™ CLR αž”αžΎαž€ GC αž αžΎαž™αž€αžΆαžšαž”αž„αŸ’αž€αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ” αžœαžΆαž‚αž½αžšαžαŸ‚αž™αžΊαžαž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹ αž‡αžΏαžαŸ’αž‰αž»αŸ†αŸ” αž”αžšαž·αž˜αžΆαžŽαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŠαŸαž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αž›αž·αžαž€αž˜αŸ’αž˜αž‘αŸ†αž“αžΎαž” αž¬αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αž–αž€αž˜αž·αž“αž€αžΆαžšαž–αžΆαžšαž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž‡αžΆαž€αžΆαžšαž–αž·αž αž€αžΆαžšαž…αž„αž…αžΆαŸ†αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“ αž’αŸ’αž“αž€αž‘αŸ†αž“αž„αž‡αžΆαž“αžΉαž„αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž› GC αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžαžΆαž˜αž‘αŸ’αžšαžΉαžŸαŸ’αžŠαžΈ αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž‚αžΊαž‡αžΆαž€αŸ’αžšαžŽαžΆαžαŸ‹αž€αŸ’αžšαž αž˜αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αžΆαžαŸ‹αŸ”

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž™αžΎαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαž”αŸ’αžšαžΎ IoC containers αž“αž·αž„ date mappers αžŠαŸ‚αž›αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž•αž„αžŠαŸ‚αžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž˜αž·αž“αž˜αžΆαž“αžŸαŸ†αžŽαž½αžšαž’αŸ†αž–αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αžœαžΆαž‘αŸαŸ” αž‘αŸ αž˜αž·αž“αž˜αŸ‚αž“αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž“αŸƒαž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™ αž“αž·αž„αž€αžΆαžšαž’αžšαžΌαž”αžΈαž–αžΈαž‚αŸ†αžšαžΌαž”αžšαž·αž”αž‘αžŠαŸ‚αž›αž˜αžΆαž“αž€αž˜αŸ’αžšαž·αžαžαžΆαž„αž€αŸ’αžšαŸ…αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŽαžΆαžŸαŸ‹αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž›αŸ‡αž”αž„αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŽαžΆαž€αŸαžŠαŸ„αž™αŸ” αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αž‡αžΆαž„ - αžœαžΆαž–αž·αžαž‡αžΆαž˜αž·αž“αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ’αžšαžΎαž“αž‘αŸαŸ”

αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆαž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž‘αžΌαž‘αŸ…αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž•αŸ’αž’αŸ‚αž€αž›αžΎαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž”αŸ’αžšαžΎαž›αŸ’αž”αž·αž…αž‚αŸ’αžšαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž›αŸ’αž’αž”αŸ’αžšαžŸαžΎαžšαŸ” αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž“αŸ’αžŸαŸ„αž˜ αž“αž·αž„αž”αŸ’αžšαžαž·αž—αžΌαžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αž–αžΈαž˜αŸ‚αž€αž’αžΆαž„αž€αž“αŸ’αžŸαŸ„αž˜αŸ” automapper αžŠαžΌαž…αž‚αŸ’αž“αžΆαžšαž€αŸ’αžŸαžΆαžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜αž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„αžŠαŸ‚αž›αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž”αŸ’αžšαž—αŸαž‘αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž˜αž½αž™αž‘αŸ…αž‡αžΆαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ„αž™αž˜αž·αž“αž αŸ…αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αŸ”

αžαžΎαž“αŸαŸ‡αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ? αžŸαŸ†αžαžΆαž“αŸ‹ αžœαžΆαž˜αž·αž“αžαž»αžŸαž–αžΈαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŠαŸ‚αž›αžœαŸαž‘αž·αž€αžΆαžαŸ’αž›αž½αž“αž―αž„αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ JIT αž“αŸ„αŸ‡αž‘αŸαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αž‡αžΆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž€αŸ’αžšαž„ (αž αžΎαž™αž”αžΆαž‘ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸαŸ‡αž˜αž·αž“αž›αžΏαž“αž‘αŸ) αž“αŸ…αž›αžΎαž€αžΆαžšαž αŸ…αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ…αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αžšαž½αž…αž αžΎαž™ αž αžΎαž™αžœαžΆαž“αžΉαž„αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž’αžΌαžŸαž‘αžΆαž‰αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αž‘αŸαŸ”

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž”αŸ’αžšαžΎαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ JIT αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ’αžšαžΎαž₯αžšαž·αž™αžΆαž”αžαž…αž„αž€αŸ’αžšαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αžŸαž˜αž—αžΆαž‚αžΈ AOT αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž€αžΆαžšαž”αž‰αŸ’αž…αŸαž‰αž˜αžαž·αž“αžΉαž„αž˜αž€αžšαž€αž‡αŸ†αž“αž½αž™αžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αŸ”

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαž½αžšαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαž„αŸ’αžαŸαž”αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:
αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž›αž‘αŸ’αž’αž•αž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž‡αžΆαž”αŸ’αžšαžαž·αž—αžΌαžŠαŸ‚αž›αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž…αž„αž€αŸ’αžšαž„αŸ” αžœαžΆαž€αŸαžŸαž˜αž αŸαžαž»αž•αž›αž•αž„αžŠαŸ‚αžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžαŸ’αžαž»αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αŸαžαŸŒαž˜αžΆαž“αž”αŸ’αžšαž—αŸαž‘αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž›αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž€αž˜αŸ’αž˜αž€αžš αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžœαžαŸ’αžαž»αŸ”

αž˜αžΆαž“αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžšαžΏαž„αž“αŸαŸ‡αŸ” αžŸαžαž·αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž”αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αžαžΆ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž˜αž½αž™αž’αžΆαž…αž…αž„αž€αŸ’αžšαž„ αž“αž·αž„αž‘αž»αž€αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž”αžΆαž“ αž“αŸ„αŸ‡αžœαžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαŸ”

αžŸαž˜αŸ’αž›αžΉαž„αž‘αŸ…αž˜αž»αž αžœαžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž“αž·αž™αžΆαž™αžαžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž˜αžΆαž“αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž·αžšαž”αžŸαŸ‹αžœαžΆ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αŸ’αž“αž€αž˜αž·αž“αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž€αž“αŸ’αžŸαŸ„αž˜αž€αŸαžŠαŸ„αž™αŸ” αžαžΆαž˜αž–αž·αžαž‘αŸ… αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž“αž·αž™αžΆαž™αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž’αžαŸ’αžαž”αž‘αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž’αžαŸ’αžαž”αž‘αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž™αŸ„αž„αžαžΆαž„αž›αžΎαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ†αž–αžΈαž›αŸαžαž€αžΌαžŠαŸ” αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αžŠαŸ‚αž›αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžˆαžΊαž…αžΆαž”αŸ‹αž“αžΆαž–αŸαž›αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžˆαž˜αž˜αž»αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αž›αž·αžαžŠαŸαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαž“αŸƒαžŸαŸ’αžαžΆαž”αŸαž“αž₯αžŽαž‘αžΆαž“αžŠαŸαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαž˜αž½αž™αŸ” αž’αž„αŸ’αž‚αž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŸαž»αž‘αŸ’αž’αžαŸ‚αž”αŸ’αžšαžŒαž·αž αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‚αŸ’αž˜αžΆαž“αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αžŸαŸ’αž˜αžΆαž“

αž˜αžΆαž“αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαžαŸ’αž›αŸ‡αŸ” αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αŸ” αž˜αžΆαž“αž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αžαž½αž’αžαŸ’αžαž”αž‘αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαž‰αŸ‚αž€ αž“αž·αž„ hydrator αž”αž„αŸ’αž€αžΎαžαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αžŸαŸ†αž”αž»αžαŸ’αžšαž˜αž½αž™αž”αžΆαž“αž˜αž€αžŠαž›αŸ‹ αž™αžΎαž„αž’αžΆαž“αžœαžΆ αž‰αŸ‚αž€αžœαžΆαž‘αŸ…αž‡αžΆαž‚αžΌαžαž˜αŸ’αž›αŸƒαž‚αž“αŸ’αž›αžΉαŸ‡ αž”αž„αŸ’αž€αžΎαžαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„ αž“αž·αž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžΆαž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

αžœαžΆαž‡αžΆαž”αž‹αž˜αŸ” αž§αž”αž˜αžΆαžαžΆαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž˜αžΆαž“αž›αž€αŸ’αžαžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž· αžˆαŸ’αž˜αŸ„αŸ‡αž–αŸαž‰ αž’αžΆαž™αž» αž“αž·αž„αž‘αžΌαžšαžŸαž–αŸ’αž‘αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αŸ” αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αžαžΆαž˜αžŸαŸ†αž”αž»αžαŸ’αžšαŸ” αž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž€αŸαž…αž„αŸ‹αž”αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž•αž„αžŠαŸ‚αžš αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αžŸαŸ„αžαŸ’αž˜αžΈαž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αžΌαžŸαž•αŸ‚αž“αž‘αžΈαžœαžαŸ’αžαž»αž’αžΆαžαž»αž‘αŸ…αž‡αžΆαž‚αžΌαž“αŸ…αž€αŸ’αž“αž»αž„αžαž½αž’αž€αŸ’αžŸαžšαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž’αŸ’αžœαžΎαžαž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌ αž¬αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž»αž“αž–αŸαž›αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž‚αžΌαžŸαž•αŸ‚αž“αž‘αžΈαž‡αžΆαž”αž“αŸ’αž‘αžΆαž“αŸ‹αž–αžΈαžŠαŸƒαž‚αžΌαžαŸ’αž˜αžΈ αžŠαŸ„αž™αžŸαž˜αŸ’αžšαž”αžαŸ’αž›αž½αž“αž‘αŸ…αž“αžΉαž„αž‘αž˜αŸ’αžšαž„αŸ‹αžαŸ’αž˜αžΈαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‡αžΆαž”αŸ‹αž‘αžΆαž€αŸ‹αž‘αž„αž‚αŸ’αž“αžΆαž“αŸƒαž•αŸ‚αž“αž‘αžΈαžαŸ’αž˜αžΈαž˜αž½αž™αž‡αžΆ datafix αžαŸ„αž€αŸ” αž“αŸ„αŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž‡αžΈαžœαž·αžαŸ”

αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž, αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαŸ” αž€αžΆαžšαž„αžΆαžšαŸ”

αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αž•αŸ’αžαž›αŸ‹αž›αŸαžαž€αžΌαžŠαž‘αŸαŸ– αž˜αžΆαž“αž”αŸ’αžšαž—αž–αž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αž–αž½αž€αžœαžΆαž˜αžΆαž“αž“αŸ…αž›αžΎ GitHub αžαžΆαž˜αžšαž™αŸˆαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž’αžαŸ’αžαž”αž‘αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž‘αž»αž€αž–αž½αž€αžœαžΆ αž’αŸ’αžœαžΎαž‘αžΆαžšαž»αžŽαž€αž˜αŸ’αž˜αž–αž½αž€αž‚αŸαž›αžΎαžŸαž–αžΈαž€αžΆαžšαž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹ αž“αž·αž„αžœαžΆαžŸαŸ‹αžŸαŸ’αž‘αž„αŸ‹αž–αž½αž€αžœαžΆ αžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž“αžΉαž„αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž›αŸαžαž€αžΌαžŠαž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‚αŸ†αžšαžΌαž–αžΈαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž”αŸ‚αž„αž…αŸ‚αž€ hydrator αžŠαŸ‚αž›αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž›αžΏαž“ αž–αžΈ hydrator αžŠαŸ‚αž›αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž™αžΊαžαŸ”

αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ– αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‚αŸ†αžšαžΌαž‘αž‘αž½αž›αž”αžΆαž“αž‚αžΌαžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž‰αŸ‚αž€αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αžŸαŸ’αžšαž‘αžΆαž”αŸ‹ LINQ αž‚αžΊαž‡αžΆαž’αŸ’αž“αž€αž‰αŸ‚αž€ αž“αž·αž„αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹ hydrator αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αž‘αŸ…αž€αžΆαž“αŸ‹αž”αžšαž·αž”αž‘αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž αžΎαž™αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžŸαŸ„αž‡αžΆαž˜αž½αž™αž‚αžΌαž–αžΈαž§αž”αž€αžšαžŽαŸαž‰αŸ‚αž€ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αžΆαž“αž€αžΌαžŠαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ LINQ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”)αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž‚αžΌαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš hydration αž…αž˜αŸ’αž”αž„ αž αžΎαž™αžαž˜αŸ’αž›αŸƒαž“αŸƒαž‚αžΌαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αŸ…αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸƒαž’αž„αŸ’αž‚αž—αžΆαž–αŸ”

"αž›αžΏαž“" (αž”αž»αž–αŸ’αžœαž”αž‘αž›αžΏαž“αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„αž–αž·αž“αŸ’αž‘αž»)αŸ–

 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;
        }

αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰ αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž‹αž·αžαž·αžœαž“αŸ’αžαžŠαŸ‚αž›αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž· setter αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ - lambdas αž…αž„αž€αŸ’αžšαž„αžŠαŸ‚αž›αž αŸ…αžαžΆ setter entity αŸ” αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

        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 αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ” αž αžΎαž™αž—αŸ’αž›αžΆαž˜αŸ— ... (spoiler - αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž˜αžΆαž“αž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜)

αž’αžαŸ’αžαž”αž‘αž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™αž’αŸ†αž–αžΈαž€αžΆαžšαž–αž“αŸ’αž›αžΏαž“αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„

αžαžΎαž™αžΎαž„αžƒαžΎαž‰αž’αŸ’αžœαžΈαž“αŸ…αž‘αžΈαž“αŸαŸ‡? αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αž‘αž‘αž½αž›αž‡αŸαž™αž‡αŸ†αž“αŸ‡αž›αžΎαž”αž»αž–αŸ’αžœαž”αž‘ Fast αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž™αžΊαžαž‡αžΆαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž˜αžΆαž“αž”αž»αž–αŸ’αžœαž”αž‘αž™αžΊαžαŸ” αž“αŸαŸ‡αž‡αžΆαž€αžΆαžšαž–αž·αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€ αž“αž·αž„αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž„αžΆαžšαŸ” αž˜αŸ‰αŸ’αž™αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž•αŸ‚αž“αž‘αžΈαžŠαŸαžŸαŸ’αžšαžŸαŸ‹αžŸαŸ’αž’αžΆαž αž“αž·αž„αž†αžΎαžαž†αžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš LINQ αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ†αžŽαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αž‚αŸ’αžšαž”αŸ‹αž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž•αž›αž·αžαž—αžΆαž–αž™αŸ‰αžΆαž„αž…αŸ’αžšαžΎαž“αŸ” αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž‚αžΊαž›αŸ†αžŠαžΆαž”αŸ‹αŸ” αž‘αŸ†αž“αŸ„αžšαž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž›αŸαžαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž†αŸ’αž›αž„αž€αžΆαžαŸ‹ αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„ LINQ αžœαžΆαž˜αžΆαž“αž›αŸ’αž”αžΏαž“αž™αžΊαžαž‡αžΆαž„ 4 αž‘αŸ… 200 αžŠαž„ αžœαžΆαž˜αžΆαž“αžŸαŸ†αžšαžΆαž˜αž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

αž’αŸ’αžœαžΎαž±αŸ’αž™αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™

αžαŸ’αž‰αž»αŸ†β€‹αž˜αž·αž“β€‹αž‡αžΏβ€‹αž—αŸ’αž“αŸ‚αž€β€‹αžαŸ’αž‰αž»αŸ†β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžŸαŸ†αžαžΆαž“αŸ‹β€‹αž‡αžΆαž„β€‹αž“αŸαŸ‡β€‹αž‘αŸ…β€‹αž‘αŸ€αž αž˜αž·αžαŸ’αžβ€‹αžšαž½αž˜β€‹αž€αžΆαžšαž„αžΆαžšβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž˜αž·αž“β€‹αž‡αžΏβ€‹αž—αŸ’αž“αŸ‚αž€β€‹αžαŸ’αž‰αž»αŸ† αž¬β€‹αž€αžΌαžŠβ€‹αžšαž”αžŸαŸ‹β€‹αžαŸ’αž‰αž»αŸ† - Dmitry Tikhonov 0x1000000. αžŠαŸ„αž™αž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž–αžΈαžšαžŠαž„ αž‚αžΆαžαŸ‹αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž™αŸ‰αžΆαž„αžαŸ’αžšαž…αŸ‡αžαŸ’αžšαž…αž„αŸ‹ αž“αž·αž„αž”αžΆαž“αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžαž€αžαžΆαž“αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž–αžΈαžŠαŸ†αž”αžΌαž„αžšαž αžΌαžαžŠαž›αŸ‹αž…αž»αž„αž€αŸ’αžšαŸ„αž™αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‡αž½αžŸαž‡αž»αž›αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Moq αž›αž‘αŸ’αž’αž•αž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αž’αŸ’αž›αžΆαž€αŸ‹αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž“αŸ’αž›αŸ‚αž„αŸ” αž™αŸ„αž„αžαžΆαž˜αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‘αžΎαž„αžœαž·αž‰αž“αž·αž“αŸ’αž“αžΆαž€αžΆαžšαž…αž˜αŸ’αž”αž„αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš - LINQ αž“αŸ…αžαŸ‚αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹αžŠαŸ‚αž›αž€αžΆαžšαž„αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž€αž“αŸ’αžŸαŸ„αž˜αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž₯αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‘αŸ αž αžΎαž™αž›αž‘αŸ’αž’αž•αž›αž‚αžΊαž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž‘αžΆαŸ†αž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€ αž“αž·αž„αž–αŸαž›αžœαŸαž›αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ” αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ†αž”αžΌαž„ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž›αž‹αž·αžαž·αžœαž“αŸ’αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž™αžΊαžαž‡αžΆαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš "αž›αžΏαž“" αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

αž“αŸαŸ‡αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‘αžΎαž„αžœαž·αž‰αŸ–

αž’αžαŸ’αžαž”αž‘αž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™αž’αŸ†αž–αžΈαž€αžΆαžšαž–αž“αŸ’αž›αžΏαž“αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αŸ– αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž αž‚αŸ’αžšαžΆαžŸ αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž„αžΆαž€αž‘αŸ…αžšαž€αž›αŸ’αž”αž·αž…αž“αŸ„αŸ‡αž‘αŸ - LINQ αž“αžΉαž„αžŸαŸŠαžΈαž’αžŸαŸ‹αž•αž›αž·αžαž—αžΆαž–αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αž‘αž»αž€αžαŸ’αž–αžŸαŸ‹αžŠαŸ‚αž›αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž’αŸ’αž“αž€αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαžŠαŸ†αž”αžΌαž„ αž“αž·αž„αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž”αŸ’αžšαžαž·αž—αžΌ αžŠαŸ‚αž›αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆ "αž›αžΏαž“" αŸ” αžœαž·αž’αžΈαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαž”αžΆαž“αž‘αžΆαŸ†αž„αž—αžΆαž–αž”αžαŸ‹αž”αŸ‚αž“αž“αŸƒαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„ αž“αž·αž„αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž›αŸαžαž€αžΌαžŠαž‚αŸ„αž›αž˜αžΆαž“αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ” αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž’αžΆαž…αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž–αžΆαž€αŸ’αž™αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž–αžΈαžšαžŠαž„αŸ–
HabraReflectionTests

PSαŸ– αž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž”αŸ’αžšαžΎ IoC αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ„αž›αž€αŸ†αžŽαžαŸ‹αžœαžΆαž”αŸ’αžšαžΎαž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αŸ” αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αž»αž„αž€αŸ’αžšαŸ„αž™αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž€αžΆαžαŸ‹αž…αŸ„αž›αž“αžΌαžœαž€αžαŸ’αžαžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž“αž·αž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž›αž‘αŸ’αž’αž•αž›αž˜αž·αž“αž˜αžΆαž“αžŸαž˜αŸ’αž›αŸαž„αžšαŸ†αžαžΆαž“αŸ”

PPS: αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαžŠαž›αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Dmitry Tikhonov @0x1000000 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž€αžƒαžΎαž‰αž€αŸ†αž αž»αžŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Moq αžŠαŸ‚αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžΆαžšαžœαžΆαžŸαŸ‹αžœαŸ‚αž„αžŠαŸ†αž”αžΌαž„αŸ” αž”αžΎαž˜αž·αžαŸ’αžαž’αŸ’αž“αž€αž’αžΆαž“αžŽαžΆαž˜αžΆαž“αž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹ សូម Like αž•αž„αŸ” αž”αž»αžšαžŸβ€‹αž“αŸ„αŸ‡β€‹αžˆαž”αŸ‹ αž”αž»αžšαžŸβ€‹αž“αŸ„αŸ‡β€‹αž’αžΆαž“ αž”αž»αžšαžŸβ€‹αž“αŸ„αŸ‡β€‹αž–αž·αž“αž·αžαŸ’αž™β€‹αž–αžΈαžšβ€‹αžŠαž„ αž αžΎαž™β€‹αž…αž„αŸ’αž’αž»αž›β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αž€αŸ†αž αž»αžŸαŸ” αžαŸ’αž‰αž»αŸ†β€‹αž‚αž·αžβ€‹αžαžΆβ€‹αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αžŸαž€αŸ’αžαž·αžŸαž˜β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž‚αŸ„αžšαž–β€‹αž“αž·αž„β€‹αž’αžΆαžŽαž·αžαž’αžΆαžŸαžΌαžšαŸ”

PPPS: αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαžŠαž›αŸ‹αž’αŸ’αž“αž€αž’αžΆαž“αžŠαŸαž˜αŸ‰αžαŸ‹αž…αžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αžˆαžΆαž“αžŠαž›αŸ‹αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸƒαžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž“αž·αž„αž€αžΆαžšαžšαž…αž“αžΆαŸ” αžαŸ’αž‰αž»αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž―αž€αžŸαžŽαŸ’αž‹αžΆαž“ αž“αž·αž„αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ” αž€αžΆαžšαž‘αžΌαžβ€‹αž“αŸƒβ€‹αž”αž‘β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αž‘αž»αž€β€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž…αž„αŸ‹β€‹αž”αžΆαž“β€‹αž…αŸ’αžšαžΎαž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžαŸ’αž‰αž»αŸ†β€‹αž™αž€β€‹αž€αžΆαžšβ€‹αžšαž·αŸ‡αž‚αž“αŸ‹β€‹αž˜αž€β€‹αž–αž·αž…αžΆαžšαžŽαžΆαŸ” αžαŸ’αž‰αž»αŸ†αžŸαž»αŸ†αž”αžΆαž‰αŸ‹αž€αžΆαŸ†αž‡αŸ’αžšαž½αž…αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹