рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ!
рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдпреВрдирд┐рдЯреА 3 рдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддрдм рддрдХ рдореЗрд░реЗ рдкрд╛рд╕ рдЪрд╛рд░ рд╕рд╛рд▓ рдХрд╛ .NET рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЕрдиреБрднрд╡ рдерд╛ред рдЗрди рдЪрд╛рд░ рдХреЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдИ рдмрдбрд╝реА рдФрджреНрдпреЛрдЧрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрднрд╡ рдореЗрд░реЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдирд┐рдХрд▓рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦреЗрд▓ рджреЗрд╡ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдЕрдм рдореИрдВ рдкрд╣рд▓реЗ рд╣реА рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реНрдпрд░реНрде рдирд╣реАрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реБрдирддреЗ рд╣реИрдВ - рдпрд╣ рдареАрдХ рд╣реИред рдкрд╛рд╕ рдордд рдХрд░реЛ! рдпрд╣ рд▓реЗрдЦ рд╕реВрдХреНрд╖реНрдо рддрдереНрдпреЛрдВ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдП рдмрд┐рдирд╛, рддрдереНрдп-рдЦреЛрдЬ рд▓реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣реИрдмреЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред DI рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ - рддрдерд╛рдХрдерд┐рдд DI рдХрдВрдЯреЗрдирд░ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрд░реАрдм рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рд░реА рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдо рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдбрд░ рд▓рдЧрддрд╛ рдерд╛ред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд▓рд╛рдЗрдЯрд╡реЗрдЯ-рдЖрдИрдУрдХ-рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ (рд╕рднреА рд▓рд┐рдВрдХ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВ), рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рдордирд╛ рдХрд░ рджрд┐рдпрд╛ рдФрд░, рдореИрдВрдиреЗ рдкрд╢реНрдЪрд╛рддрд╛рдк рдХрд┐рдпрд╛, рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрд╛ред рдЕрдкрдиреЗ рдмрдЪрд╛рд╡ рдореЗрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдПрдХрддрд╛ 3 рдбреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреЗрдЬ рдФрд░ рдЖрд╕рд╛рди рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреАред
рдЙрджрд╛рд╣рд░рдг
рддреЛ, рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд░рд▓реАрдХреГрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдо рдПрдХ рдЦреЗрд▓ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЙрд▓реНрдХрд╛рдкрд┐рдВрдбреЛрдВ рдХреЛ рдЪрдХрдорд╛ рджреЗрддреЗ рд╣реБрдП рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рднреА рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдЬ рдХреЛ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рджрдмрд╛рдПрдВред рдпрд╣ рдПрдХ рдзрд╛рд╡рдХ рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рд╡рд┐рд╖рдп рдкрд░ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреАрдмреЛрд░реНрдбрдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд░реНрдЧ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рджрдмрд╛рдП рдЧрдП рдмрдЯрдиреЛрдВ рдФрд░ рд╕реНрдкреЗрд╕рд╢рд┐рдк рдХреНрд▓рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛, рдЬреЛ рдХрдг рдзрд╛рд░рд╛рдУрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реБрдП рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рдмрд╛рдВрдзреЗрдВ:
public class MyClass { private SpaceShip spaceShip; private KeyboardController controller; public void Init() { controller = new KeyboardController(); GameObject gameObject = GameObject.Find("/root/Ships/MySpaceShip"); spaceShip = gameObject.GetComponent<SpaceShip>(); } public void Update() { if (controller.LeftKeyPressed()) spaceShip.MoveLeft(); if (controller.RightKeyPressed()) spaceShip.MoveRight(); } }
рдХреЛрдб рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИ - рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ред рд╣рдорд╛рд░рд╛ рдЦреЗрд▓ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реИред
рдЕрд╣рд╣ !!! рдореБрдЦреНрдп рдбрд┐рдЬрд╛рдЗрдирд░ рдЕрднреА рдЖрдП рд╣реИрдВ рдФрд░ рдХрд╣рд╛ рд╣реИ рдХрд┐ рдЕрд╡рдзрд╛рд░рдгрд╛ рдмрджрд▓ рдЧрдИ рд╣реИред рдЕрдм рд╣рдо рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯреИрдмрд▓реЗрдЯ рдФрд░ рдЬрд╣рд╛рдЬ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрдЯрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреИрдмрд▓реЗрдЯ рдХрд╛ рдЭреБрдХрд╛рд╡ рдмрд╛рдПрдВ-рджрд╛рдПрдВред рдФрд░ рдХреБрдЫ рджреГрд╢реНрдпреЛрдВ рдореЗрдВ, рдПрдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рдореЗрдВ рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧрд▓рд┐рдпрд╛рд░реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЬреАрдм рд╡рд┐рджреЗрд╢реА рджреМрдбрд╝ рд╣реЛрдЧреАред рдФрд░ рдЗрд╕ рдПрд▓рд┐рдпрди рдХреЛ рд╕реНрд╡рд╛рдЗрдк рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдм рдлрд┐рд░ рд╕реЗ рд╣реИ !!!
рдпрд╛ рд╕рднреА рдирд╣реАрдВ?
рдЕрдЧрд░ рд╣рдо рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА рдпрд╣ рд╣рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЧрд╛:
public class MyClass { private IControlledCharacter spaceShip; private IController controller; public void Init() { controller = new KeyboardController(); GameObject gameObject = GameObject.Find("/root/Ships/MySpaceShip"); spaceShip = gameObject.GetComponent<SpaceShip>(); } public void Update() { if (controller.LeftCmdReceived()) spaceShip.MoveLeft(); if (controller.RightCmdReceived()) spaceShip.MoveRight(); } }
рдореИрдВрдиреЗ LeftKeyPressed () рдФрд░ RightKeyPressed () рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ LeftCmdReceived () рдФрд░ RightCmdReceived () рднреА рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА (рджреБрдЦрдж рд╕реНрдорд╛рдЗрд▓реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП) рдХреАрдмреЛрд░реНрдбрдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рд╕реНрдкреЗрд╕рд╢рд┐рдк рдХреНрд▓рд╛рд╕реЗрдЬ рдХреЗ рдХреЛрдб рдирд╛рдо рдЕрднреА рднреА рдХреЛрдб рдореЗрдВ рд╣реИрдВред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рддреБрд░рдВрдд рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
public class MyClass { public IControlledCharacter SpaceShip { get; set; } public IController Controller { get; set; } public void Update() { if (Controller.LeftCmdReceived()) SpaceShip.MoveLeft(); if (Controller.RightCmdReceived()) SpaceShip.MoveRight(); } }
рд╣рдореНрдо, рджреЗрдЦреЛ! рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдЫреЛрдЯреА рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛ рдЧрдИ рд╣реИ! рджреГрд╢реНрдп рдкреЗрдбрд╝ рдореЗрдВ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЙрд╕рдХреЗ рдШрдЯрдХ рдХреЛ рдЧрд╛рдпрдм рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рд╛рдЗрдиреЗрдВред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░, рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХрд╣реАрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдЖрдк рдЙрдиреНрд╣реЗрдВ рд▓реЗ рдирд╣реАрдВ рд╕рдХрддреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлреЗрдВрдХ рдирд╣реАрдВ рд╕рдХрддреЗ? рддреЛ, рд╣рдордиреЗ рдЙрд╕ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЬрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - "рдЗрдВрдЬреЗрдХреНрдЯ"ред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдбреАрдЖрдИ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!
рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрд╕рдХреА рдереЛрдбрд╝реА рдорджрдж рдХрд░рдиреА рд╣реЛрдЧреА:
1. рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо [рдирд┐рд░реНрднрд░рддрд╛] рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
public class MyClass { [Dependency] public IControlledCharacter SpaceShip { private get; set; } [Dependency] public IController Controller { private get; set; } public void Update() { if (Controller.LeftCmdReceived()) SpaceShip.MoveLeft(); if (Controller.RightCmdReceived()) SpaceShip.MoveRight(); } }
2. рд╣рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕реЗ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣рд╛рдБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ - рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
var container = new Container(); container.RegisterType<MyClass>(); container.RegisterType<IController, KeyboardController>(); container.RegisterSceneObject<IControlledCharacter>("/root/Ships/MySpaceShip");
рдЕрдм рдХрдВрдЯреЗрдирд░ рдХреЛ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
MyClass obj = container.Resolve<MyClass>();
рдУрдмреНрдЬ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЪрд┐рдкрдХрд╛ рджреА рдЬрд╛рдПрдВрдЧреАред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдЬрдм рд╣рдо рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рдорд╛рдИрдХреНрд▓рд╛рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
рдХрдВрдЯреЗрдирд░ рдкрдВрдЬреАрдХреГрдд рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдиреБрд░реЛрдзрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, MyClass рд╡рд░реНрдЧ рд░рдЬрд┐рд╕реНрдЯрд░рдЯрд╛рдЗрдк () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ - рдЕрдиреБрд░реЛрдз рдкрд░, рдХрдВрдЯреЗрдирд░ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рдирдпрд╛ MyClass рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдВрдЯреЗрдирд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЛ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИрдВ рдФрд░ рдХрдВрдЯреЗрдирд░ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ <> ()ред
рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ IController рдкреНрд░рдХрд╛рд░ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред RegisterType <IController, KeyboardController> () рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ IController рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ KeyboardController (рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛, рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред
рджреВрд╕рд░реЗ IControlledCharacter рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ RegisterSceneObject ("/ root / Ships / MySpaceShips") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрддрд╛рдпрд╛ред рдХрдВрдЯреЗрдирд░ рд╕реЗ рдХреБрдЫ рднреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рджреГрд╢реНрдп рдкреЗрдбрд╝ рдореЗрдВ рдкрде рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╡рд╕реНрддреБ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдШрдЯрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ DI рдХрдВрдЯреЗрдирд░ рдФрд░ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдвреЗрд░ рд╕рд╛рд░рд╛ рд╕рд╛рдорд╛рдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рд┐рдВрдЧрд▓реЗрдЯреНрд╕ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЛрдИ рднреА рдЬреЛ IController рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЕрдкрдиреЗ KeyboardController рдХреА рдПрдХ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред рд╣рдо KeyboardController рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╕рднреА рдЖрд╡реЗрджрдХреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рд╣рдо 'рдирдИ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╕реНрддреБ рдХреЛ рд╕реНрд╡рдпрдВ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдкреАрдбрд╝рд┐рдд рдХреЛ рд╡рд╕реНрддреБ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗред рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреИрдиреНрдЯрд┐рд╡рд┐рдпрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдлрд┐рд░ рдкреНрд░рд┐рдп рдкрд╛рдардХ рдиреЗ рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рдХреЛ рд╕рдВрджреЗрд╣ рд╕реЗ рд╕рдВрдХреБрдЪрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдкреВрдЫрд╛ - рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдУрд╡рд░-рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ? рдРрд╕реЗ рдмрд╛рдЧреЛрдВ рдХреА рдмрд╛рдбрд╝ рдХреНрдпреЛрдВ рд▓рдЧрд╛рдПрдВ рдЬрдм "рдкрдмреНрд▓рд┐рдХ рд╕реНрдЯреИрдЯрд┐рдХ рдЯреА рдЗрдВрд╕реНрдЯреЗрдВрд╕ {рдЧреЗрдЯ?}" рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ рд╕рд┐рдВрдЧрд▓рдЯрди рдиреБрд╕реНрдЦрд╛ рд╣реИ? рдореИрдВ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реВрдВ - рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ:
1. рд╕реНрдерд┐рд░ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЛрдб рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдХрд╣рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рднрдЧрд╡рд╛рди рдХреЗ рджрд┐рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИред рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╡рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реЛрддреА рд╣реИрдВред рдпрд╣рд╛рдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдбрд┐рдВрдЧ рдХрдиреНрд╡реЗрдВрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рд╢реНрд░реЗрдгреА рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдПрдХ рд╕рд╛рде рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдирд┐рдЬреА рдЪрд░ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЬрд╛рдПрдВ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдкрд╣рд▓реЗред
2. рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рд┐рдВрдЧрд▓рдЯрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрди рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЖрдорддреМрд░ рдкрд░ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рдбреАрдЖрдИ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдХреНрд▓рд╛рд╕ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдВрдЧрд▓рдЯрди рддрдХ рдкрд╣реБрдВрдЪ рдмрдирд╛рдирд╛ рдФрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рди рдХреЗрд╡рд▓ рд╕рд┐рдВрдЧреНрд▓реЗрдЯреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╣реИ:
var controller = new Mock<IController>(); controller.Setup(c => c.LeftCmdReceived()).Returns(true); var spaceShip = new Mock<IControlledCharacter>(); var container = new Container(); container.RegisterType<MyClass>(); container.RegisterInstance<IController>(controller.Object); container.RegisterInstance<IControlledCharacter>(spaceShip.Object); var myClass = container.Resolve<MyClass>(); myClass.Update(); spaceShip.Verify(s => s.MoveLeft(), Times.Once()); spaceShip.Verify(s => s.MoveRight(), Times.Never());
рдореИрдВрдиреЗ рдЗрд╕ рдЯреЗрд╕реНрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП Moq рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдпрд╣рд╛рдБ рд╣рдо рджреЛ рдореЛрдЪрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ - рдПрдХ IController рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛ IControlledCharacter рдХреЗ рд▓рд┐рдПред рд╣рдордиреЗ IController рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ - LeftCmdReceived () рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдиреЗ рдкрд░ рд╕рд╣реА рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдХрдВрдЯреЗрдирд░ рдореЗрдВ рджреЛрдиреЛрдВ рдореЛрдХрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реЗ MyClass рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ (рджреЛрдиреЛрдВ рдЕрдм рд╣рдорд╛рд░реЗ рдореЛрдХреНрд╕ рд╣реЛрдВрдЧреЗ) рдФрд░ рдЙрд╕ рдкрд░ рдЕрдкрдбреЗрдЯ () рдХреЙрд▓ рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ MoveLeft () рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рдмрд╛рд░ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ MoveRight () - рдПрдХ рднреА рдирд╣реАрдВред
рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдорд┐рдХреА MyClass "рдкреЗрди" рдореЗрдВ рдлрдВрд╕ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрдВрдЯреЗрдирд░ рдХреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ, рдЙрджрд╛рд╣рд░рдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдореЛрдХ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗ рдЬреЛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЪрдврд╝рддреА рд╣реИрдВред
рд╕реВрдЦрд╛ рд╣реБрдЖ рдЕрд╡рд╢реЗрд╖
1. рдХрдВрдЯреЗрдирд░ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдЗрд╕рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдХрдЯреНрдареА рд╣реБрдИ рд╡рд╕реНрддреБ рдорд┐рд▓рддреА рд╣реИред рд╕рд╛рде рд╣реА рдЙрд╕рдХреЗ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛, рдЙрд╕рдХреЗ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдЖрджрд┐ред
2. рдХрдХреНрд╖рд╛ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдиреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреА рд╣реИрдВред рдПрдХ рдирдЬрд╝рд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд╕рдВрд╕реНрдерд╛ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░рддреА рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдкрдардиреАрдпрддрд╛, рдХреЛрдб рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреБрдг рд╣реИ, рдпрджрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди -> рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди -> рдмрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо -> рдХреЛрдб рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рддрд╛ рд╣реИ -> рд╡рд┐рдХрд╛рд╕ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЧрдд рдХрдо рд╣реЛрддреА рд╣реИ
3. рдХреЛрдб рд╣реА рд╕рд░рд▓реАрдХреГрдд рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рдорд╛рд░реЗ рддреБрдЪреНрдЫ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рджреГрд╢реНрдп рдкреЗрдбрд╝ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЦреЛрдЬ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреЛрдб рдХреЗ рдРрд╕реЗ рд╣реА рдХрд┐рддрдиреЗ рдЯреБрдХрдбрд╝реЗ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВ? рд╡рд░реНрдЧ рдЕрдкрдиреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдЕрдзрд┐рдХ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред
4. рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рдЪреАрд▓рд╛рдкрди рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ - рдХрдВрдЯреЗрдирд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЖрдкрдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ
5. рдЗрд╕ рд▓рдЪреАрд▓реЗрдкрди рд╕реЗ рдЖрдкрдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реЛрддреА рд╣реИ (рдФрд░ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ)
6. рдФрд░ рдЖрдЦрд┐рд░реАред рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рдзреИрд░реНрдпрдкреВрд░реНрд╡рдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЛрдирд╕ред рд╣рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореАрдЯреНрд░рд┐рдХ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдпрджрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрди рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдпрд╣ рдХрдИ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдПрди рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди
рдмреЗрд╢рдХ, рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдХрд┐ рджреГрд╢реНрдп рд╡реГрдХреНрд╖ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЦреЛрдЬ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдбреАрдЖрдИ рдХрдВрдЯреЗрдирд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдХрдВрдЯреЗрдирд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдФрд░ рдПрдХ рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╣рд╛рдВ
рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
dl.dropboxusercontent.com/u/1025553/UnityDI.arрдХреГрдкрдпрд╛ рдкрдврд╝реЗрдВ рдФрд░ рдЖрд▓реЛрдЪрдирд╛ рдХрд░реЗрдВред
рд▓реЗрдЦ рдореЗрдВ рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рд╣рд▓реНрдХреЗ-рдЖрдИрдУрд╕реА рдХрдВрдЯреЗрдирд░MoqрдкреБрдирд╢реНрдЪред Github рдкрд░ рдкреЛрд╕реНрдЯ рдХреЛрдб:
github.com/yaroslav-gurilev/UnityDI