рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
- рдкрд░рд┐рдЪрдп
- рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкреНрд░рд┐рдЬреНрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ
- рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди
- рдореЙрдбреНрдпреВрд▓рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕
- рдПрдорд╡реАрд╡реАрдПрдо рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
- рдЙрдиреНрдирдд MVVM рдкрд░рд┐рджреГрд╢реНрдп
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрдорд╛рдг
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢
- рдиреЗрд╡рд┐рдЧреЗрд╢рди
- рджреГрд╢реНрдп-рдЖрдзрд╛рд░рд┐рдд рдиреЗрд╡рд┐рдЧреЗрд╢рди
- рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдХреНрд░рд┐рдпрд╛
рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рд╕рдордЧреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛрддреЗ рд╣реИрдВ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдШрдЯрдХреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ред рдЙрдиреНрд╣реЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред рдЪреВрдВрдХрд┐ рд╡реЗ рд╢рд┐рдерд┐рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреАред
рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдЬреНрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐ рдХрдВрдЯреЗрдирд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред DI рдХрдВрдЯреЗрдирд░, рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд░рд╛рд╕реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдирдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдХреЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдпрд╣ рдЙрдирдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рддреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдЙрд╕рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рд╕реЗрд╡рд╛рдПрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХреЗрдВред
рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ:
- рдХрдВрдЯреЗрдирд░ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдпрд╛ рдЙрдирдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
- рдХрдВрдЯреЗрдирд░ рдЖрдкрдХреЛ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдХрдВрдЯреЗрдирд░ рдкрд░реАрдХреНрд╖рдг рдХреНрд╖рдорддрд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдирдХрд▓реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирдП рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдХрд░ рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдкреНрд░рд┐рдЬреНрдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдлрд╛рдпрджреЗ рд╣реИрдВ:
- рдХрдВрдЯреЗрдирд░ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
- рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдПрдХ рдХрдВрдЯреЗрдирд░ рджреГрд╢реНрдп рдореЙрдбрд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рджреГрд╢реНрдп рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕рдордЧреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рдмрдВрдзрдХ, рдпрд╛ рдПрдХ рдЗрд╡реЗрдВрдЯ рдПрдЧреНрд░реАрдЧреЗрдЯрд░ред
- рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбреНрдпреВрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгреА
рдкреНрд░рд┐рдЬреНрдо рдореИрдиреБрдЕрд▓ рдореЗрдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдПрдХрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреНрд▓реЙрдХ (рдПрдХрддрд╛) рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдп, рдЬреИрд╕реЗ рдХрд┐ рдореЙрдбреНрдпреБрд▓рд░рд┐рдЯреА рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯреНрд╕ , рдкреНрд░рдмрдВрдзрд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╕реАрдмрд┐рд▓рд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ (MEF) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд┐рдЬреНрдо рдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд╡рдпрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕рдХреА рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдХреИрд╕рд▓рд╡рд┐рдВрдбрд░, рдСрдЯреЛрдлрд╛рдХ, рд╕реНрдЯреНрд░рдХреНрдЪрд░рдореИрдк, рд╕реНрдкреНрд░рд┐рдВрдЧ.рдиреЗрдЯ, рдпрд╛ рдХреЛрдИ рдЕрдиреНрдпред
рдореБрдЦреНрдп рдирд┐рд░реНрдгрдп: рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЪрдпрди
рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреЛ рдбрд┐рдлреЙрд▓реНрдЯ DI рдХрдВрдЯреЗрдирд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ: рдПрдХрддрд╛ рдФрд░ MEFред рдкреНрд░рд┐рдЬрд╝реНрдо рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдХрд░ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХрддрд╛ рдФрд░ MEF рджреЛрдиреЛрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдПрдХ рд╣реА рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реЛрдВред рджреЛрдиреЛрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рджреЛрдиреЛрдВ рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░рдХрд╛рд░ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
- рджреЛрдиреЛрдВ рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
- рджреЛрдиреЛрдВ рдЖрдкрдХреЛ рдкрдВрдЬреАрдХреГрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
- рджреЛрдиреЛрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЗрдВрдЬреЗрдХреНрд╢рди рд▓рдЧрд╛рддреЗ рд╣реИрдВред
- рджреЛрдиреЛрдВ рдЧреБрдгреЛрдВ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рддреЗ рд╣реИрдВред
- рджреЛрдиреЛрдВ рдХреЗ рдкрд╛рд╕ рдкреНрд░рдХрд╛рд░ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛рддреНрдордХ рдЧреБрдг рд╣реИрдВред
- рд╡реЗ рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреНрд░рд╛рдл рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред
рдПрдХрддрд╛ рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ MEF рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ:
- рдмрд┐рдирд╛ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг ( рдЬреЗрдирд░рд┐рдХ ) рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рд▓рдХреНрд╖реНрдп ( рдЕрд╡рд░реЛрдзрди ) рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдердб рдХреЙрд▓ рдЗрдВрдЯрд░рд╕реЗрдкреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
MEF рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХрддрд╛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ:
- рдпрд╣ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред
- рд▓реЛрдб XAP рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдЙрдирдореЗрдВ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред
- рдЬрдм рдирдП рдкреНрд░рдХрд╛рд░ рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХрд╛ рдкреБрдирд░реНрдорд┐рд▓рди рдХрд░рддрд╛ рд╣реИред
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред
- .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЪреМрдереЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдХрдВрдЯреЗрдирд░ рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рд┐рдЬреНрдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд┐рд╕реА рднреА рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХрд┐рд╕ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдХрдВрдЯреЗрдирд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред
рдХрдВрдЯреЗрдирд░ рд╡рд┐рдЪрд╛рд░
рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдФрд░ рд╣рд▓ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:
- рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдбреНрд░рд╛рдЗрдВрдЧ рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП 10,000 рдкреЙрд▓реАрдЧрди рдмрдирд╛рдиреЗ рд╣реИрдВ, рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдкреЙрд▓реАрдЧреЙрди рдмрдирд╛рдиреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдиреЛрдЯред
рдХреБрдЫ рдХрдВрдЯреЗрдирд░ рдирдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╣реА рд╡рд╕реНрддреБ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рд▓реЗрдХрд┐рди, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реВрдк рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдХрд▓реНрдк рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдпрджрд┐ рдХрдИ рдЧрд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдХрд╛рдлреА рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдШрдЯрдХ рдХреА рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╕реНрд╡рдпрдВ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреНрд░рдорд╢рдГ рд░рдЦ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдХрд┐рд╕реА рдШрдЯрдХ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИ рдФрд░ рдХрднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рддреЛ рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдШрдЯрдХ рдХреЛ рдПрдХрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ:
- рдпрджрд┐ рдШрдЯрдХ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдПрдХрд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ, рдЬреИрд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдпрджрд┐ рдШрдЯрдХ рдХрдИ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЙрд╕реЗ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдХреЛ рд╕рдВрднрд╡рддрдГ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЗ рдПрдХ рдирдП рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
- рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЛрдб рдореЗрдВ рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
- рдпрджрд┐ рдЖрдк рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
- рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЙрдбреНрдпреВрд▓ рд╕реНрддрд░ рдХреА рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ, рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рддрдм рдкрдВрдЬреАрдХреГрдд рд╣реЛрдВ рдЬрдм рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╣реЛред
рдЯрд┐рдкреНрдкрдгреА
MEF рдЬреИрд╕реЗ рдХреБрдЫ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдзрд╛рд░ рдкрд░рд┐рджреГрд╢реНрдп
рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдЕрдиреБрдорддрд┐ред
рдкрдВрдЬреАрдХрд░рдг
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛ рд╕рдХреЗрдВ, рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдХрд╛рд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд╛рд╕ рдХрд░рдирд╛ рдФрд░ рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рд╡рд╣рд╛рдБ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рджреЛ рддрд░реАрдХреЗ: рдХреЛрдб рдореЗрдВ, рдпрд╛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдХрдВрдЯреЗрдирд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдорддреМрд░ рдкрд░, рдХреЛрдб рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
- рдЖрдк рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдореИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреБрдХреНрдд рд╕рдордп рдкрд░, рдХрдВрдЯреЗрдирд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдЧрд╛ред
- рдЖрдк рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рд▓реМрдЯрд╛рдПрдЧрд╛ред
UnityContainer рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдкреНрд░рдХрд╛рд░
рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдкреНрд░рдХрд╛рд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рджреГрд╢реНрдп рдФрд░ рд╕реЗрд╡рд╛рдПрдВред рдкрдВрдЬреАрдХрд░рдг рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирд┐рдореНрди рдХреЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐
рдХрдорд╛рдВрдбрд┐рдВрдЧ рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рд╕реЗ
OrderModule
рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреА рддрд░рд╣, рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
public class OrderModule : IModule { public void Initialize() { this.container.RegisterType<IOrdersRepository, OrdersRepository>(new ContainerControlledLifetimeManager()); ... } ... }
рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдкрдВрдЬреАрдХрд░рдг рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдХреЗ рдмрд╛рд╣рд░ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзреНрдпрд╛рдп 4 рдореЗрдВ "
рдореЛрдбреНрдпреВрд▓рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ" рд░рдЬрд┐рд╕реНрдЯрд░рд┐рдВрдЧ рдореЛрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ "рджреЗрдЦреЗрдВред"
рдПрдордИрдПрдл рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХрд░рдг рдкреНрд░рдХрд╛рд░
рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MEF рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЯрд╛рдЗрдк рдкрдВрдЬреАрдХрд░рдг рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ: рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрдВ
[Export]
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдк рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
[Export(typeof(ILoggerFacade))] public class CallbackLogger: ILoggerFacade { ... }
MEF рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ рддрддреНрдХрд╛рд▓ рднреЗрдЬ рджреЗ рдФрд░ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░ рджреЗред
MEF рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдореЗрдВ
QuickStartBootstrapper
рдХрдВрдлрд░реНрдЯрдХреЙрдирдЯреЗрдирд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИред
protected override void ConfigureContainer() { base.ConfigureContainer();
рдЯрд┐рдкреНрдкрдгреА
рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ MEF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдкрдВрдЬреАрдХрд░рдг рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдкрд░рдорд┐рдЯ
рдПрдХ рдмрд╛рд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓ рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рддреЛ рдпрд╣ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрдм рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддреАрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрддрд╛ рд╣реИ:
- рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгреА
рдПрдХрддрд╛ рд╕рд╣рд┐рдд рдХреБрдЫ рдХрдВрдЯреЗрдирд░, рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдХрдВрдЯреЗрдирд░ рд╕рд┐рдВрдЧрд▓рдЯрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реА рдХреЙрд▓ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгреА
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, MEF рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдкреНрд░рдХрд╛рд░ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИрдВ, рдФрд░ рдХрдВрдЯреЗрдирд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХрддрд╛ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирдП рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдХрдВрдЯреЗрдирд░ рдЙрдирдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдПрдХрддрд╛ рдХрд╛ рд╕рдВрдХрд▓реНрдк
рдХрдорд╛рдВрдбрд┐рдВрдЧ рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрдВрдЯреЗрдирд░ рд╕реЗ
OrdersEditorView
рдФрд░
OrdersToolBar
рдХреЛ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдмрд╛рдБрдзрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
public class OrderModule : IModule { public void Initialize() { this.container.RegisterType<IOrdersRepository, OrdersRepository>(new ContainerControlledLifetimeManager());
OrdersEditorPresentationModel
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдирд┐рдореНрди рдирд┐рд░реНрднрд░рддрд╛рдПрдВ (рдСрд░реНрдбрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдСрд░реНрдбрд░ рдХрдорд╛рдВрдб рдкреНрд░реЙрдХреНрд╕реА) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреЗрд╢ рдХреА рдЬрд╛рддреА рд╣реИрдВред
public OrdersEditorPresentationModel(IOrdersRepository ordersRepository, OrdersCommandProxy commandProxy) { this.ordersRepository = ordersRepository; this.commandProxy = commandProxy;
рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХрддрд╛ рдЧреБрдгреЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рднреА рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреА рд╣реИред рдХреЛрдИ рднреА рдЧреБрдг рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП
[Dependency]
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рд▓ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЛ
OptionalDependency
рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрджрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ
null
рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИред
MEF рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди
рдирд┐рдореНрди рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐
MEF рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдореЗрдВ
Bootstrapper
рдПрдХ рд╢реЗрд▓ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреЛрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред
protected override DependencyObject CreateShell() { return this.Container.GetExportedValue<Shell>(); }
рдПрдордИрдПрдл рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдореЗрдВ, рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐
рдПрдордИрдПрдл рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП ModuleA
рд╕реЗ
рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ
ILoggerFacade
рдФрд░
IModuleTracker
рд▓рд╛рдЧреВ
IModuleTracker
ред
[ImportingConstructor] public ModuleA(ILoggerFacade logger, IModuleTracker moduleTracker) { if (logger == null) { throw new ArgumentNullException("logger"); } if (moduleTracker == null) { throw new ArgumentNullException("moduleTracker"); } this.logger = logger; this.moduleTracker = moduleTracker; this.moduleTracker.RecordModuleConstructed(WellKnownModuleNames.ModuleA); }
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рд╕рдВрдкрддреНрддрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐
MEF рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдХреЗ
ModuleTracker
рд╡рд░реНрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб
ILoggerFacade
рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред
[Export(typeof(IModuleTracker))] public class ModuleTracker : IModuleTracker {
рдЯрд┐рдкреНрдкрдгреА
рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдореЗрдВ, рдЖрдпрд╛рддрд┐рдд рдЧреБрдг рдФрд░ рдХреНрд╖реЗрддреНрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░рд┐рдЬреНрдо рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрдВрдЯреЗрдирд░реЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрдВрдЯреЗрдирд░ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдФрд░ рд╕рдВрдХрд▓реНрдк рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХрддрд╛ рдФрд░ рдПрдордИрдПрдл рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдЪреВрдВрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ
IServiceLocator
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдЯреЗрдирд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
IServiceLocator
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдорддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдк рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
IServiceLocator
рдЗрдВрдЯрд░рдлрд╝реЗрд╕
рдХреЙрдорди рд╕рд░реНрд╡рд┐рд╕ рд▓реЛрдХреЗрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ IoC (рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрд▓рдЯрд╛) рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрдВрдЯреЗрдирд░, рдФрд░ рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ред рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд┐рдП рдмрд┐рдирд╛, рдЖрдИрдУрд╕реА рдФрд░ рд╕реЗрд╡рд╛ рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА
UnityServiceLocatorAdapter
рдФрд░
MefServiceLocatorAdapter
рдкреНрд░рджрд╛рди
MefServiceLocatorAdapter
ред рджреЛрдиреЛрдВ рдПрдбреЗрдкреНрдЯрд░
ISeviceLocator
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ,
ServiceLocatorImplBase
рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░рдг рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдпрджреНрдпрдкрд┐ рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдХрд╛ рд╕рдВрджрд░реНрдн рдпрд╛ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреАрдЖрдИ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рд┐рдЬреНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕реАрдзреЗ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рд╕реНрдЯреЙрдХ рдЯреНрд░реЗрдбрд░ рдЖрд░рдЖрдИ рдРрдк рдФрд░ рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯреНрд╕ рд╕реЗ рдХрдИ рд▓реЛрдЧ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдФрд░ рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ MEF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
IServiceLocator
рдирд┐рдореНрди рдХреЛрдб
IServiceLocator
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЙрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
public interface IServiceLocator : IServiceProvider { object GetInstance(Type serviceType); object GetInstance(Type serviceType, string key); IEnumerable<object> GetAllInstances(Type serviceType); TService GetInstance<TService>(); TService GetInstance<TService>(string key); IEnumerable<TService> GetAllInstances<TService>(); }
рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд┐рдЬреНрдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкреВрд░рдХ рд╣реИред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
IServiceLocator
рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЕрдиреБрдорддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
public static class ServiceLocatorExtensions { public static object TryResolve(this IServiceLocator locator, Type type) { try { return locator.GetInstance(type); } catch (ActivationException) { return null; } } public static T TryResolve<T>(this IServiceLocator locator) where T: class { return locator.TryResolve(typeof(T)) as T; } }
TryResolve
рдПрдХреНрд╕рдЯреЗрдВрд╢рди
TryResolve
, рдЬрд┐рд╕реЗ рдпреВрдирд┐рдЯреА рдХрдВрдЯреЗрдирд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рдкрд░ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдпрд╣
null
ред
рдореЙрдбреНрдпреВрд▓
ModuleInitializer
рд▓реЛрдб рд╣реЛрддреЗ рд╕рдордп рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
IServiceLocator
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
IModule moduleInstance = null; try { moduleInstance = this.CreateModule(moduleInfo); moduleInstance.Initialize(); } ...
protected virtual IModule CreateModule(string typeName) { Type moduleType = Type.GetType(typeName); if (moduleType == null) { throw new ModuleInitializeException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.FailedToGetType, typeName)); } return (IModule)this.serviceLocator.GetInstance(moduleType); }
IServiceLocator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░
IServiceLocator
рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рд╢рдмреНрджрд╛рд░реНрде рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ рдХрдВрдЯреЗрдирд░ рдХреА рдкрд╕рдВрдж рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП,
рд╕реНрдЯреЙрдХ рдЯреНрд░реЗрдбрд░ рдЖрд░рдЖрдИ IServiceLocator
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ,
IServiceLocator
рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдЪрд┐рдд рд╣реИ:
- рдЖрдк рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХреНрд░реЗрддрд╛ (ISV) рд╣реИрдВ рдЬреЛ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХрдИ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдЖрдк рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЧрдарди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА
DI рдХрдВрдЯреЗрдирд░реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рджреЗрдЦреЗрдВ: