рдкрд░рд╛рд╡рд░реНрддрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд▓реЗрдЦ

рдореИрдВ рддреБрд░рдВрдд рд▓реЗрдЦ рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред рдореВрд▓ рдпреЛрдЬрдирд╛ рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рд▓рд╛рд╣ рджреЗрдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЙрддрдирд╛ рдзреАрдорд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛, LINQ рдореЗрд░реЗ рдмреБрд░реЗ рд╕рдкрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВрдиреЗ рднреА рдорд╛рдк рдореЗрдВ рдЧрд▓рддреА рдХреА рд╣реИ... рдЗрд╕ рдЬреАрд╡рди рдХрд╣рд╛рдиреА рдХрд╛ рд╡рд┐рд╡рд░рдг рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╣реИред рдЪреВрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдХрд┐рд╕реА рдЙрджреНрдпрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдмрд┐рдд рд╣реБрдЖ, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЬреАрд╡рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди: рд▓реЗрдЦ рдХреЗ рдореБрдЦреНрдп рд╡рд┐рд╖рдп рдХреА рдЧрддрд┐ рдкрд░ рдкреНрд░рднрд╛рд╡ рдерд╛ рдмрд╛рд╣рд░реА рддрд░реНрдХ рдХреЗ рдХрд╛рд░рдг рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ: Moq, Autofac, EF Core рдФрд░ рдЕрдиреНрдп "рдмреИрдВрдбрд┐рдВрдЧ"ред

рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдХрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛: рдкрд░рд╛рд╡рд░реНрддрди рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдЦрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдзреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдкреНрд░рдХрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдХрд▓рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЖрдИрдПрд▓ рдЙрддреНрд╕рд░реНрдЬрди рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╢реНрд░рдо-рдЧрд╣рди рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рдорд╛рди рд░рд╛рдп рд░рд╣реА рд╣реИ, рдореЗрд░рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЗрдЦрдХ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдард╛рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдерд╛ред

рдореИрдВ рдЕрдХреНрд╕рд░ рдЙрджреНрдпрдо рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдЕрдиреБрднрд╡рд╣реАрди рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВред рдкреНрд░рдХрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реА рдЧрдИ рд╣реИред SetValue рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдХреЛрдИ рдЖрдирдиреНрджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рд▓рдХреНрд╖реНрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореВрд▓реНрдп рдЖ рдЧрдпрд╛ рд╣реИ, рд╕рднреА рдЦреБрд╢ рд╣реИрдВред рдмрд╣реБрдд рд╣реА рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧ - рд╡рд░рд┐рд╖реНрда рдФрд░ рдЯреАрдо рд▓реАрдбрд░ - рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ "рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ" рдореИрдкрд░реНрд╕ рдХреЗ рдРрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╕рд╛рд░ рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рд╣реИ: рд╣рдо рд╕рднреА рдлрд╝реАрд▓реНрдб рд▓реЗрддреЗ рд╣реИрдВ, рд╕рднреА рдЧреБрдг рд▓реЗрддреЗ рд╣реИрдВ, рдЙрди рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ: рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо SetValue рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдордп-рд╕рдордп рдкрд░ рд╣рдо рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдХреБрдЫ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рднреА рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ред

рдореИрдВрдиреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕рд░реНрд╕ рдФрд░ рдореИрдкрд░реНрд╕ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдХрд┐ рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдорд╢реАрдиреЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреЗ рднреЛрд▓реЗ-рднрд╛рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЗ рдкреАрдЫреЗ, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдкреАрдЫреЗ, рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдмрд╛рдж рдХреЗ рдмреИрдЪреЗрдирд▓рд┐рдпрд╛ рдХреЛ рдорд╛рдл рдХрд░ рджреЗрдЧрд╛ред рдореИрдВрдиреЗ рдРрд╕реЗ рдЕрд╣рд╕рд╛рд╕реЛрдВ рдкрд░ рдЕрдкрдиреА рдирд╛рдХ рдКрдкрд░ рдХрд░ рд▓реАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рд▓реАрдХ рдХреЛ рдирд╣реАрдВ рдорд╛рдкрд╛, рдФрд░, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдореИрдВрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ "рдЗрд╖реНрдЯрддрдо" рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рд╣рд╛рде рд░рдЦ рд╕рдХрд╛ред рдЗрд╕рд▓рд┐рдП, рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдкрд╣рд▓реЗ рдорд╛рдкреЛрдВ рдиреЗ рдореБрдЭреЗ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░ рджрд┐рдпрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧ, рд░рд┐рдХреНрдЯрд░ рдпрд╛ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░рдХреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реБрдП, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд╖реНрдкрдХреНрд╖ рдмрдпрд╛рди рд▓реЗрдХрд░ рдЖрдП рд╣реИрдВ рдХрд┐ рдХреЛрдб рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдХ рдРрд╕реА рдШрдЯрдирд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдмреЗрд╣рдж рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред

рдХреЙрд▓рд┐рдВрдЧ рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рд╕реАрдПрд▓рдЖрд░ рдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЬреЛ рдЪрд╛рд╣рд┐рдП рдЙрд╕реЗ рдвреВрдВрдв рд╕рдХреЗрдВ, рдЙрдирдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдЦреАрдВрдЪ рд╕рдХреЗрдВ, рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХреЗрдВ, рдЖрджрд┐ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдкрд░рд╛рд╡рд░реНрддрди рд╕реЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЖрд╡рдВрдЯрди рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕реАрдПрд▓рдЖрд░ рдЬреАрд╕реА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлреНрд░рд┐рдЬрд╝ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛рдлрд╝реА рдзреАрдорд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВред рдЖрдзреБрдирд┐рдХ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдпрд╛ рдХреНрд▓рд╛рдЙрдб рдорд╢реАрдиреЛрдВ рдкрд░ рднрд╛рд░реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдЙрдЪреНрдЪ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рджреЗрд░реА рдХреЛ рдирд╣реАрдВ рд░реЛрдХрддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рд╣реЛрдЧреА, рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреА рдХрд┐ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬреАрд╕реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рд▓ рдХрдкрдбрд╝рд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рд╕рднреА 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 рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЬреЛ рдЙрдирдХреЗ рд╕рд╣рд╕рдВрдмрдВрдз рдЬреЛрдбрд╝реЗ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рдЗрдХрд╛рдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд▓рд┐рдЦрддреА рд╣реИред рдЙрдкрд╕рд░реНрдЧ - рдореИрдиреБрдЕрд▓.

рдЕрдм рдЖрдЗрдП рдмреЗрдВрдЪрдорд╛рд░реНрдХрдбреЙрдЯрдиреЗрдЯ рд▓реЗрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдФрд░ рдЕрдЪрд╛рдирдХ... (рд╕реНрдкреЙрдЗрд▓рд░ - рдпрд╣ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИ, рд╡рд┐рд╡рд░рдг рдиреАрдЪреЗ рд╣реИрдВ)

рдкрд░рд╛рд╡рд░реНрддрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд▓реЗрдЦ

рд╣рдо рдпрд╣рд╛рдБ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рд╡реЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛ рд╡рд┐рдЬрдпреА рд░реВрдк рд╕реЗ рддреЗрдЬрд╝ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рд╕рд╣рди рдХрд░рддреА рд╣реИрдВ, рд╡реЗ рдзреАрдореА рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рдкрд╛рд╕реЛрдВ рдореЗрдВ рдзреАрдореА рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдХрд╛рдо рдХреЗ рдЖрд╡рдВрдЯрди рдФрд░ рдЧрддрд┐ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЬрд╣рд╛рдВ рднреА рд╕рдВрднрд╡ рд╣реЛ, LINQ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдкрд┐рдВрдЧ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдЕрдВрддрд░ рдХреНрд░рдо рдХрд╛ рд╣реИ. рдкрд╛рд╕реЛрдВ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдкреНрд░рд╡реГрддреНрддрд┐ рдирд╣реАрдВ рдмрджрд▓рддреАред рдлрд░реНрдХ рд╕рд┐рд░реНрдл рдкреИрдорд╛рдиреЗ рдХрд╛ рд╣реИ. LINQ рдХреЗ рд╕рд╛рде рдпрд╣ 4-200 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реИ, рд▓рдЧрднрдЧ рдЙрд╕реА рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрдзрд┐рдХ рдХрдЪрд░рд╛ рд╣реИред

рдирд╡реАрдиреАрдХреГрдд

рдореБрдЭреЗ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рд╣рдХрд░реНрдореА рдХреЛ рдореЗрд░реА рдЖрдВрдЦреЛрдВ рдпрд╛ рдореЗрд░реЗ рдХреЛрдб рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ - рджрд┐рдорд┐рддреНрд░реА рддрд┐рдЦреЛрдиреЛрд╡ 0x1000000. рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╢рд╛рдирджрд╛рд░ рдврдВрдЧ рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рдЦреЛрдЬ рдХреА рдФрд░ рдмрддрд╛рдпрд╛ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗ рдЕрдВрддрд┐рдо рддрдХ рдХрдИ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдЪреВрдХ рдЧрдпрд╛ред Moq рд╕реЗрдЯрдЕрдк рдореЗрдВ рдкрд╛рдП рдЧрдП рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдкрд░рд┐рдгрд╛рдо рд╕рд╣реА рд╣реЛ рдЧрдПред рдкреБрдирдГ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореБрдЦреНрдп рдкреНрд░рд╡реГрддреНрддрд┐ рдирд╣реАрдВ рдмрджрд▓рддреА - LINQ рдЕрднреА рднреА рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╡реНрдпрд░реНрде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЖрд╡рдВрдЯрди рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рджреЛрдиреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг, рдЬрдм рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, "рддреЗрдЬ" рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред

рдпрд╣рд╛рдБ рдкреБрдирдГ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

рдкрд░рд╛рд╡рд░реНрддрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд▓реЗрдЦ

рдирд┐рд╖реНрдХрд░реНрд╖: рдХрд┐рд╕реА рдЙрджреНрдпрдо рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рддрд░рдХреАрдмреЛрдВ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдиреЗ рдХреА рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - LINQ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрдЪреНрдЪ-рд▓реЛрдб рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЖрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдФрд░ рдбреЗрд▓рд┐рдЧреЗрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЛ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рддрдм "рддреЗрдЬрд╝" рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдЖрдк рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЧрддрд┐ рджреЛрдиреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ. рдХреЛрдИ рднреА рдореЗрд░реЗ рд╢рдмреНрджреЛрдВ рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
рд╣рд╛рдмреНрд░рд╛рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдЯреЗрд╕реНрдЯ

рдкреБрдирд╢реНрдЪ: рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЛрдб IoC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдпрд╣ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдореИрдВрдиреЗ рдЙрди рд╕рднреА рдХрд╛рд░рдХреЛрдВ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рдереЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╢реЛрд░рдЧреБрд▓ рд╡рд╛рд▓рд╛ рдмрдирд╛ рд╕рдХрддреЗ рдереЗред

рдкреАрдкреАрдПрд╕: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджрд┐рдорд┐рддреНрд░реА рддрд┐рдЦреЛрдиреЛрд╡ @0x1000000 Moq рдХреА рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдореЗрд░реА рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдиреЗ рдкрд╣рд▓реЗ рдорд╛рдк рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред рдпрджрд┐ рдХрд┐рд╕реА рдкрд╛рдардХ рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдХрд░реНрдо рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЗрдХ рдХрд░реЗрдВред рд╡рд╣ рдЖрджрдореА рд░реБрдХрд╛, рдЙрд╕ рдЖрджрдореА рдиреЗ рдкрдврд╝рд╛, рдЙрд╕ рдЖрджрдореА рдиреЗ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдЧрд▓рддреА рдмрддрд╛рдИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдореНрдорд╛рди рдФрд░ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреЗ рдпреЛрдЧреНрдп рд╣реИред

рдкреАрдкреАрдкреАрдПрд╕: рдЙрд╕ рд╕реВрдХреНрд╖реНрдо рдкрд╛рдардХ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдЬреЛ рд╢реИрд▓реА рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рддрд╣ рддрдХ рдЧрдпрд╛ред рдореИрдВ рдПрдХрд░реВрдкрддрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ. рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рдХреВрдЯрдиреАрддрд┐ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ред рдореИрдВ рдкреНрд░рдХреНрд╖реЗрдкреНрдп рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ