рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рддреНрд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд▓реЗрдЦ

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

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

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

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

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

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

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

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

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

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

рдпрд╣ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЙрд╕ рддрд░реНрдХ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рдпрдВ JIT рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдФрд░, рд╣рд╛рдВ, рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреЗрдЬ рдирд╣реАрдВ рд╣реИ), рдмрд╛рдж рдХреА рдХреЙрд▓ рдХреЗ рд╕рд╛рде, рдирд┐рдпрдВрддреНрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрд╕рдХреЗ рдПрдУрдЯреА рд╕рдордХрдХреНрд╖реЛрдВ рдХреЗ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдПрдЧреАред

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

рдЗрд╕рдореЗрдВ рддрд░реНрдХ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЕрдм рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдЬреЛ рдореЗрд░реЗ рд╣рд╛рд▓ рдХреЗ рджрд░реНрдж рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдПрдХ рдЧрдВрднреАрд░ рдХреНрд░реЗрдбрд┐рдЯ рд╕рдВрдЧрдарди рдХреЗ рдЧрдВрднреАрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛ред рд╕рднреА рд╕рдВрд╕реНрдерд╛рдПрдВ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдЕрдиреБрдорд╛рди рди рд▓рдЧрд╛рдПред

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

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

рд╣рдо рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рддреЗ рд╣реИрдВред рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

рддрд░реНрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рдзрд┐ рдмреЗрд╕ рдкрд╛рд░реНрд╕рд░ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдЧрдард┐рдд рдЬреЛрдбрд╝реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред LINQ рд╕реНрддрд░, рд╣рд╛рдЗрдбреНрд░реЗрдЯрд░ рдХрд╛ parser рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рддрд░реНрдХ рд╣реИ, db рд╕рдВрджрд░реНрдн рдФрд░ parser рд╕реЗ рдЬреЛрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдХреБрдВрдЬреА рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ (рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП 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;
        }

рдпрд╣рд╛рдВ рд╣рдо рддреБрд░рдВрдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдзреЗ рд╕реЗрдЯрд╡реИрд▓реНрдпреВ рдХрд╣рддреЗ рд╣реИрдВред

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

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



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

рдЕрджреНрдпрддрди

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

рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:



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

рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╡рд╛рд▓рд╛ рдПрдХ рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рд░ рдХреЛрдИ рдореЗрд░реЗ рд╢рдмреНрджреЛрдВ рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
HabraReflectionTests

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

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

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

All Articles