แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ“แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒ›แƒแƒจแƒ˜แƒœแƒ•แƒ” แƒแƒ•แƒฎแƒกแƒœแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒก. แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒ”แƒ’แƒ›แƒ แƒ˜แƒงแƒ แƒ™แƒแƒ แƒ’แƒ˜, แƒกแƒแƒœแƒ“แƒ แƒ แƒฉแƒ”แƒ•แƒ˜แƒก แƒ›แƒ˜แƒชแƒ”แƒ›แƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒงแƒ แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒ”แƒแƒšแƒ˜แƒกแƒขแƒฃแƒ แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ‘แƒ”แƒœแƒฉแƒ›แƒแƒ แƒ™แƒ˜แƒœแƒ’แƒ˜แƒก แƒ“แƒ แƒแƒก แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒ แƒแƒ› แƒแƒกแƒแƒฎแƒ•แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒœแƒ”แƒšแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ” แƒ›แƒ”แƒ’แƒแƒœแƒ, LINQ แƒฃแƒคแƒ แƒ แƒœแƒ”แƒšแƒ˜แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒฉแƒ”แƒ›แƒก แƒ™แƒแƒจแƒ›แƒแƒ แƒ”แƒ‘แƒจแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ‘แƒแƒšแƒแƒก แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒ แƒแƒ› แƒ›แƒ”แƒช แƒจแƒ”แƒ•แƒชแƒ“แƒ˜ แƒ’แƒแƒ–แƒแƒ›แƒ•แƒ”แƒ‘แƒจแƒ˜... แƒแƒ› แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ˜แƒกแƒ”แƒฃแƒšแƒ˜ แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒญแƒ แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ แƒ“แƒ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜แƒ. แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒจแƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒฎแƒ“แƒ”แƒ‘แƒ แƒกแƒแƒฌแƒแƒ แƒ›แƒแƒจแƒ˜, แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ, แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ”แƒ›แƒแƒœแƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ: แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ—แƒ”แƒ›แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”แƒ–แƒ” แƒ˜แƒงแƒ. แƒ’แƒแƒ แƒ”แƒ’แƒแƒœแƒ˜ แƒšแƒแƒ’แƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒ แƒแƒ  แƒจแƒ”แƒกแƒแƒ›แƒฉแƒœแƒ”แƒ•แƒ˜แƒ: Moq, Autofac, EF Core แƒ“แƒ แƒกแƒฎแƒ•แƒ โ€žแƒกแƒแƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒ˜โ€œ.

แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒจแƒ—แƒแƒ‘แƒ”แƒญแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ—: แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก Reflection แƒœแƒ”แƒšแƒ˜

แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒแƒ•แƒขแƒแƒ แƒ˜ แƒ’แƒ•แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ“แƒ”แƒšแƒ”แƒ’แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก, แƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒแƒก แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜ แƒ’แƒ–แƒ แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ“แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒแƒ แƒ˜แƒก IL แƒ”แƒ›แƒ˜แƒกแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ” แƒ›แƒกแƒฃแƒ แƒก แƒ›แƒ˜แƒกแƒ˜ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒจแƒ แƒแƒ›แƒแƒขแƒ”แƒ•แƒแƒ“แƒ˜ แƒ’แƒ–แƒ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒ•แƒกแƒ”แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒ—.

แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ› แƒ›แƒ” แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒแƒ–แƒ แƒ˜ แƒ›แƒฅแƒแƒœแƒ“แƒ แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒแƒ  แƒ•แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ“แƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ”แƒญแƒ•แƒฅแƒ•แƒ”แƒจ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก.

แƒกแƒแƒฌแƒแƒ แƒ›แƒแƒจแƒ˜ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ•แƒฎแƒ•แƒ“แƒ”แƒ‘แƒ˜ แƒ แƒ”แƒคแƒšแƒ”แƒฅแƒกแƒ˜แƒ˜แƒก แƒ’แƒฃแƒšแƒฃแƒ‘แƒ แƒงแƒ•แƒ˜แƒšแƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก. แƒขแƒ˜แƒžแƒ˜ แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. SetValue แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒ แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒก แƒฃแƒฎแƒแƒ แƒ˜แƒ. แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ•แƒ˜แƒ“แƒ แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒ•แƒ”แƒšแƒจแƒ˜, แƒงแƒ•แƒ”แƒšแƒ แƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒ˜แƒ. แƒซแƒแƒšแƒ˜แƒแƒœ แƒญแƒ™แƒ•แƒ˜แƒแƒœแƒ˜ แƒฎแƒแƒšแƒฎแƒ˜ - แƒฃแƒคแƒ แƒแƒกแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ’แƒฃแƒœแƒ“แƒ˜แƒก แƒšแƒ˜แƒ“แƒ”แƒ แƒ”แƒ‘แƒ˜ - แƒฌแƒ”แƒ แƒ”แƒœ แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ–แƒ”, แƒแƒกแƒ”แƒ—แƒ˜ แƒ’แƒฃแƒšแƒฃแƒ‘แƒ แƒงแƒ•แƒ˜แƒšแƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”, แƒ”แƒ แƒ—แƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒ”แƒแƒ แƒ”แƒ–แƒ” "แƒฃแƒœแƒ˜แƒ•แƒ”แƒ แƒกแƒแƒšแƒฃแƒ แƒ˜" mappers. แƒแƒ แƒกแƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒแƒกแƒ”แƒ—แƒ˜แƒ: แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒ”แƒšแƒก, แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒแƒก, แƒ•แƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ— แƒ›แƒแƒ—แƒ–แƒ”: แƒ—แƒฃ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜แƒก แƒฌแƒ”แƒ•แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— SetValue-แƒก. แƒ“แƒ แƒแƒ“แƒแƒ“แƒ แƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒญแƒ”แƒ แƒ— แƒ’แƒแƒ›แƒแƒœแƒแƒ™แƒšแƒ˜แƒกแƒ”แƒ‘แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒกแƒแƒ“แƒแƒช แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ”แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒขแƒ˜แƒžแƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฅแƒแƒช แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒกแƒชแƒแƒ“แƒ”/แƒ“แƒแƒ˜แƒญแƒ˜แƒ แƒ”.

แƒ›แƒ” แƒ›แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ˜แƒ’แƒแƒœแƒ”แƒ‘แƒ”แƒœ แƒžแƒแƒ แƒกแƒ”แƒ แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ แƒฃแƒ™แƒ”แƒ‘แƒก แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒแƒ  แƒ˜แƒงแƒ•แƒœแƒ”แƒœ แƒกแƒ แƒฃแƒšแƒแƒ“ แƒจแƒ”แƒ˜แƒแƒ แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒœแƒ˜ แƒ˜แƒ› แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒ›แƒแƒ—แƒ–แƒ” แƒแƒ“แƒ แƒ” แƒ›แƒแƒฎแƒ•แƒ”แƒ“แƒ แƒ˜แƒšแƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜. แƒ›แƒ” แƒ›แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒแƒšแƒแƒ•แƒ”แƒœ แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ— แƒ’แƒฃแƒšแƒฃแƒ‘แƒ แƒงแƒ•แƒ˜แƒšแƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒกแƒขแƒ แƒแƒขแƒ”แƒ’แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ›แƒ, แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ›แƒ, แƒ˜แƒœแƒ”แƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ›แƒ, แƒ—แƒ˜แƒ—แƒฅแƒแƒก แƒ”แƒก แƒแƒ›แƒแƒ แƒ—แƒšแƒ”แƒ‘แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒ‘แƒแƒ™แƒแƒœแƒแƒšแƒ˜แƒแƒก. แƒแƒกแƒ”แƒ— แƒ’แƒแƒแƒ–แƒ แƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ” แƒชแƒฎแƒ•แƒ˜แƒ แƒ˜ แƒแƒ•แƒฌแƒ˜แƒ”. แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒ›แƒ” แƒแƒ  แƒ’แƒแƒ•แƒ–แƒแƒ›แƒ” แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒŸแƒแƒœแƒ•แƒ แƒ“แƒ, แƒ—แƒฃ แƒ”แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒจแƒ”แƒ•แƒชแƒ•แƒแƒšแƒ” แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ แƒฃแƒคแƒ แƒ โ€žแƒแƒžแƒขแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ–แƒ”โ€œ, แƒ—แƒฃแƒ™แƒ˜ แƒจแƒ”แƒ›แƒ”แƒซแƒšแƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒฃแƒšแƒ›แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ›แƒ แƒ’แƒแƒ–แƒแƒ›แƒ•แƒ”แƒ‘แƒ›แƒ แƒกแƒ”แƒ แƒ˜แƒแƒ–แƒฃแƒšแƒแƒ“ แƒ“แƒแƒ›แƒแƒ‘แƒœแƒ˜แƒ.

แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ’แƒแƒœแƒ˜, แƒ แƒ˜แƒฎแƒขแƒ”แƒ แƒ˜แƒก แƒแƒœ แƒกแƒฎแƒ•แƒ แƒ˜แƒ“แƒ”แƒแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒกแƒแƒก, แƒฌแƒแƒแƒฌแƒงแƒ“แƒ แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒกแƒแƒ›แƒแƒ แƒ—แƒšแƒ˜แƒแƒœ แƒ’แƒแƒœแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒแƒก, แƒ แƒแƒ› แƒ™แƒแƒ“แƒจแƒ˜ แƒแƒกแƒแƒฎแƒ•แƒ แƒแƒ แƒ˜แƒก แƒคแƒ”แƒœแƒแƒ›แƒ”แƒœแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ™แƒ˜แƒ“แƒฃแƒ แƒ”แƒกแƒแƒ“ แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ— แƒ’แƒแƒ•แƒšแƒ”แƒœแƒแƒก แƒแƒฎแƒ“แƒ”แƒœแƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ–แƒ”.

แƒ แƒ”แƒคแƒšแƒ”แƒฅแƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ แƒแƒ˜แƒซแƒฃแƒšแƒ”แƒ‘แƒก CLR-แƒก, แƒ’แƒแƒ˜แƒแƒ แƒแƒก แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ”แƒ‘แƒ˜, แƒ แƒแƒ—แƒ แƒ˜แƒžแƒแƒ•แƒแƒก แƒ˜แƒก, แƒ แƒแƒช แƒ›แƒแƒก แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒแƒ™แƒ แƒ˜แƒคแƒแƒก แƒ›แƒแƒ—แƒ˜ แƒ›แƒ”แƒขแƒแƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ’แƒแƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒก แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ“แƒ แƒ.แƒจ. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒแƒกแƒแƒฎแƒ•แƒ แƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ˜แƒกแƒแƒก แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒก, CLR แƒแƒฆแƒ›แƒแƒแƒฉแƒ”แƒœแƒก GC-แƒก แƒ“แƒ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒคแƒ แƒ˜แƒ–แƒ˜. แƒจแƒ”แƒกแƒแƒ›แƒฉแƒœแƒ”แƒ•แƒแƒ“ แƒœแƒ”แƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก, แƒ›แƒ”แƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ—. แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ–แƒแƒ แƒ›แƒแƒ–แƒแƒ แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ” แƒแƒœ แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ–แƒ” แƒฎแƒ”แƒšแƒก แƒแƒ  แƒฃแƒจแƒšแƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ“ แƒจแƒ”แƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒ‘แƒก. แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜, แƒ แƒแƒช แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒ, แƒ›แƒ˜แƒ— แƒฃแƒคแƒ แƒ แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ, แƒ แƒแƒ› แƒจแƒ”แƒแƒ›แƒฉแƒœแƒ”แƒ•แƒ— แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก GC. แƒแƒกแƒแƒฎแƒ•แƒ, แƒ—แƒ”แƒแƒ แƒ˜แƒฃแƒšแƒแƒ“, แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒฌแƒ˜แƒ—แƒ”แƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒ‘แƒฃแƒ แƒ˜แƒ.

แƒ—แƒฃแƒ›แƒชแƒ, แƒฉแƒ•แƒ”แƒœ แƒงแƒ•แƒ”แƒšแƒแƒœแƒ˜ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— IoC แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ—แƒแƒ แƒ˜แƒฆแƒ˜แƒก แƒ›แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒ”แƒ›แƒงแƒแƒ แƒ”แƒ‘แƒ แƒ แƒ”แƒคแƒšแƒ”แƒฅแƒกแƒ˜แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ›, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒแƒ  แƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—. แƒแƒ แƒ, แƒแƒ แƒ แƒ˜แƒ›แƒ˜แƒขแƒแƒ›, แƒ แƒแƒ› แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒชแƒ˜แƒ แƒ’แƒแƒ แƒ” แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ˜แƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒฌแƒ˜แƒ แƒแƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ - แƒ”แƒก แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒแƒ  แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ–แƒ”.

แƒคแƒแƒฅแƒขแƒ˜แƒ, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฉแƒแƒ แƒฉแƒแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒแƒ–แƒ”, แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒฎแƒ˜แƒก แƒฎแƒ แƒ˜แƒ™แƒก, แƒ แƒแƒ› แƒฃแƒคแƒ แƒ แƒแƒžแƒขแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒแƒ“ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒœ แƒ›แƒแƒกแƒ—แƒแƒœ. แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜. แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ“แƒ”แƒšแƒ”แƒ’แƒแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒฎแƒแƒขแƒ•แƒ˜แƒก แƒฎแƒ˜แƒกแƒ’แƒแƒœ. แƒ˜แƒ’แƒ˜แƒ•แƒ” automapper แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒก แƒ™แƒแƒœแƒ™แƒฃแƒ แƒ”แƒœแƒขแƒฃแƒš แƒšแƒ”แƒฅแƒกแƒ˜แƒ™แƒแƒœแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒขแƒ˜แƒžแƒ”แƒ‘แƒก แƒ˜แƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ—แƒแƒœ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฅแƒชแƒ”แƒ•แƒ แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒ แƒแƒ’แƒแƒ  แƒ›แƒ˜แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ แƒ”แƒก? แƒแƒ แƒกแƒ”แƒ‘แƒ˜แƒ—แƒแƒ“, แƒ”แƒก แƒแƒ แƒแƒคแƒ แƒ˜แƒ— แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ˜แƒ› แƒšแƒแƒ’แƒ˜แƒ™แƒ˜แƒกแƒแƒ’แƒแƒœ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ—แƒแƒ•แƒแƒ“ แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก 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();
        }

แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜แƒ. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ”, แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ“แƒ”แƒšแƒ”แƒ’แƒแƒขแƒ”แƒ‘แƒก แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒ”แƒœ แƒกแƒ”แƒขแƒ”แƒ แƒ”แƒ‘แƒก แƒ“แƒ แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒ›แƒแƒ—. แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒชแƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ, แƒ•แƒฃแƒ แƒ”แƒ™แƒแƒ•แƒ—.

"แƒœแƒ”แƒšแƒ˜" (แƒžแƒ แƒ”แƒคแƒ˜แƒฅแƒกแƒ˜ Slow แƒ™แƒ แƒ˜แƒขแƒ”แƒ แƒ˜แƒฃแƒ›แƒ”แƒ‘แƒจแƒ˜):

        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 แƒ“แƒ แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒ“แƒ แƒฃแƒชแƒ”แƒ‘... (แƒกแƒžแƒแƒ˜แƒšแƒ”แƒ แƒ˜ - แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒฌแƒแƒ แƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜, แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒฅแƒ•แƒ”แƒ›แƒแƒ—)

แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ“แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒ แƒแƒก แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒแƒฅ? แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒขแƒ แƒ˜แƒฃแƒ›แƒคแƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ”แƒœ Fast แƒžแƒ แƒ”แƒคแƒ˜แƒฅแƒกแƒ˜แƒก, แƒฃแƒคแƒ แƒ แƒœแƒ”แƒšแƒ˜แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒžแƒแƒกแƒจแƒ˜, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜ Slow แƒžแƒ แƒ”แƒคแƒ˜แƒฅแƒกแƒ˜แƒ—. แƒ”แƒก แƒ”แƒฎแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒแƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”แƒก. แƒ›แƒ”แƒแƒ แƒ”แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒ แƒฃแƒ™แƒ”แƒ‘แƒ˜แƒก แƒšแƒแƒ›แƒแƒ–แƒ˜ แƒ“แƒ แƒ”แƒšแƒ”แƒ’แƒแƒœแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ LINQ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒกแƒแƒ“แƒแƒช แƒ”แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒžแƒ˜แƒ แƒ˜แƒฅแƒ˜แƒ—, แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒก แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒฃแƒšแƒแƒ‘แƒแƒก. แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒฌแƒ”แƒกแƒ แƒ˜แƒ’แƒจแƒ˜แƒ. แƒขแƒ”แƒœแƒ“แƒ”แƒœแƒชแƒ˜แƒ แƒแƒ  แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒžแƒแƒกแƒ”แƒ‘แƒ˜แƒ—. แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒจแƒ˜แƒ. LINQ-แƒ˜แƒ— แƒ˜แƒก 4-200-แƒฏแƒ”แƒ  แƒœแƒ”แƒšแƒ˜แƒ, แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ— แƒ›แƒ”แƒขแƒ˜ แƒœแƒแƒ’แƒแƒ•แƒ˜แƒ.

แƒกแƒ˜แƒแƒฎแƒšแƒ”แƒ”แƒ‘แƒ˜

แƒ›แƒ” แƒแƒ  แƒ•แƒฃแƒฏแƒ”แƒ แƒ”แƒ‘แƒ“แƒ˜ แƒฉแƒ”แƒ›แƒก แƒ—แƒ•แƒแƒšแƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒช แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜แƒ, แƒฉแƒ•แƒ”แƒœแƒก แƒ™แƒแƒšแƒ”แƒ’แƒแƒก แƒแƒ  แƒ“แƒแƒฃแƒฏแƒ”แƒ แƒ แƒแƒ แƒช แƒฉแƒ”แƒ›แƒก แƒ—แƒ•แƒแƒšแƒ”แƒ‘แƒก แƒ“แƒ แƒแƒ แƒช แƒฉแƒ”แƒ›แƒก แƒ™แƒแƒ“แƒก - แƒ“แƒ˜แƒ›แƒ˜แƒขแƒ แƒ˜ แƒขแƒ˜แƒฎแƒแƒœแƒแƒ•แƒ˜ 0x1000000. แƒแƒ แƒ›แƒแƒ’แƒแƒ“ แƒ’แƒแƒ“แƒแƒแƒ›แƒแƒฌแƒ›แƒ แƒฉแƒ”แƒ›แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜, แƒ›แƒแƒœ แƒ‘แƒ แƒฌแƒงแƒ˜แƒœแƒ•แƒแƒšแƒ”แƒ“ แƒแƒฆแƒ›แƒแƒแƒฉแƒ˜แƒœแƒ แƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ›แƒ แƒฉแƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜แƒ“แƒแƒœ แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ›แƒ“แƒ”. Moq-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒจแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒšแƒ˜ แƒฎแƒแƒ แƒ•แƒ”แƒ–แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ—แƒแƒ•แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒ–แƒ” แƒ“แƒแƒ”แƒชแƒ. แƒฎแƒ”แƒšแƒแƒฎแƒแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒขแƒ”แƒœแƒ“แƒ”แƒœแƒชแƒ˜แƒ แƒแƒ  แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ - LINQ แƒ™แƒ•แƒšแƒแƒ• แƒ’แƒแƒ•แƒšแƒ”แƒœแƒแƒก แƒแƒฎแƒ“แƒ”แƒœแƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ–แƒ”, แƒ•แƒ˜แƒ“แƒ แƒ” แƒแƒกแƒแƒฎแƒ•แƒแƒ–แƒ”. แƒ—แƒฃแƒ›แƒชแƒ, แƒกแƒแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒแƒ, แƒ แƒแƒ› Expression-แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒฃแƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒแƒ  แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒฉแƒแƒœแƒก แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก. แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ‘แƒฃแƒœแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜แƒ, แƒฃแƒคแƒ แƒ แƒœแƒ”แƒšแƒ˜แƒ โ€žแƒกแƒฌแƒ แƒแƒคแƒ˜โ€œ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ.

แƒแƒ˜ แƒฎแƒ”แƒšแƒแƒฎแƒแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜:

แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ“แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ: แƒกแƒแƒฌแƒแƒ แƒ›แƒแƒจแƒ˜ แƒ แƒ”แƒคแƒšแƒ”แƒฅแƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ - LINQ แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒข แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒฃแƒšแƒแƒ‘แƒแƒก แƒจแƒ”แƒญแƒแƒ›แƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ”แƒœ แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒแƒก, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ— แƒแƒกแƒแƒฎแƒ•แƒ แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ“แƒ แƒ“แƒ”แƒšแƒ”แƒ’แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒช แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก โ€žแƒกแƒฌแƒ แƒแƒคโ€œ แƒšแƒแƒ’แƒ˜แƒ™แƒแƒก. แƒแƒ› แƒ’แƒ–แƒ˜แƒ— แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒแƒ— แƒ แƒแƒ’แƒแƒ แƒช แƒแƒกแƒแƒฎแƒ•แƒ˜แƒก แƒ›แƒแƒฅแƒœแƒ˜แƒšแƒแƒ‘แƒ, แƒแƒกแƒ”แƒ•แƒ” แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”.

แƒกแƒแƒแƒ แƒ˜แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒ™แƒแƒ“แƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒแƒฅ. แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒ“แƒแƒแƒ›แƒแƒฌแƒ›แƒแƒก แƒฉแƒ”แƒ›แƒ˜ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜:
HabraReflectionTests

PS: แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒจแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก IoC-แƒก, แƒฎแƒแƒšแƒ แƒ‘แƒ”แƒœแƒฉแƒ›แƒแƒ แƒ™แƒ”แƒ‘แƒจแƒ˜ แƒ˜แƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒแƒจแƒ™แƒแƒ แƒ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒแƒก. แƒคแƒแƒฅแƒขแƒ˜แƒ, แƒ แƒแƒ› แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ›แƒ” แƒจแƒ”แƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒงแƒ•แƒ”แƒšแƒ แƒคแƒแƒฅแƒขแƒแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒแƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ–แƒ” แƒ“แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒฎแƒ›แƒแƒฃแƒ แƒ˜แƒแƒœแƒ˜ แƒ’แƒแƒฎแƒแƒ“แƒแƒก.

PPS: แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒ“แƒ˜แƒ›แƒ˜แƒขแƒ แƒ˜ แƒขแƒ˜แƒฎแƒแƒœแƒแƒ•แƒ˜ @0x1000000 Moq-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒจแƒ˜ แƒฉแƒ”แƒ›แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒแƒช แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ’แƒแƒ–แƒแƒ›แƒ•แƒ”แƒ‘แƒ–แƒ”. แƒ—แƒฃ แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒ›แƒ” แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒšแƒก แƒแƒฅแƒ•แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ™แƒแƒ แƒ›แƒ, แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ›แƒแƒ˜แƒฌแƒแƒœแƒแƒ—. แƒ™แƒแƒชแƒ˜ แƒ’แƒแƒฉแƒ”แƒ แƒ“แƒ, แƒ™แƒแƒชแƒ›แƒ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ, แƒแƒ แƒ›แƒแƒ’แƒแƒ“ แƒ’แƒแƒ“แƒแƒแƒ›แƒแƒฌแƒ›แƒ แƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ. แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒ”แƒก แƒžแƒแƒขแƒ˜แƒ•แƒ˜แƒกแƒชแƒ”แƒ›แƒ˜แƒก แƒ“แƒ แƒ—แƒแƒœแƒแƒ’แƒ แƒซแƒœแƒแƒ‘แƒ˜แƒก แƒฆแƒ˜แƒ แƒกแƒ˜แƒ.

PPPS: แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ แƒ–แƒ”แƒ“แƒ›แƒ˜แƒฌแƒ”แƒ•แƒœแƒ˜แƒ— แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒ‘แƒแƒšแƒแƒ›แƒ“แƒ” แƒ›แƒ˜แƒแƒฆแƒฌแƒ˜แƒ แƒกแƒขแƒ˜แƒšแƒกแƒ แƒ“แƒ แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒก. แƒ›แƒ” แƒ”แƒ แƒ—แƒ’แƒ•แƒแƒ แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ แƒ” แƒ•แƒแƒ . แƒžแƒ แƒ”แƒ–แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ˜แƒžแƒšแƒแƒ›แƒแƒขแƒ˜แƒ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒก แƒขแƒแƒ•แƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒ แƒ’แƒแƒ•แƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”. แƒญแƒฃแƒ แƒก แƒ•แƒ˜แƒ—แƒฎแƒแƒ•.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ