Setter / property injection in Unity without attributes

后端 未结 8 661
星月不相逢
星月不相逢 2020-12-04 15:58

I am working on a project where the Unity framework is used as the IoC container. My question relates to injecting an optional dependency (in this case a logger) into severa

相关标签:
8条回答
  • 2020-12-04 16:36

    The following walkthrough shows one way of doing it through configuration. You can of course wire it through code as well. http://aardvarkblogs.wordpress.com/unity-container-tutorials/10-setter-injection/

    0 讨论(0)
  • 2020-12-04 16:39

    You can inject your class with unity container.

    for example if you have a class "MyClass" and you have dependency on two interface "IExample1" and "IExample2" and you don't want to define parameter for them in constructor , then follow below steps

    Step 1. Register both the interfaces in unity container

    IUnityContainer container = new UnityContainer();
    container.RegisterType<IExample1,Impl1>();
    container.RegisterType<IExample2,Impl2>();
    //resolve class MyClass
    var myClass = container.Resolve<MyClass>();
    


    Step 2. Your class should look like this

    public class MyClass
    {
         IExample1 ex1;
         IExample2 ex2
         public MyClass(IUnityContainer container)
         {
            /* This unity container is same unity container that we used in step 
               1 to register and resolve classes. So you can use this container to resolve
               all the dependencies. */
           ex1= container.Resolve<IExample1>(); // will give you object of Impl1
           ex2= container.Resolve<IExample2>(); // will give you object of Impl2
         }
    }
    

    Step 3. In this way you can resolve any number of dependencies without defining them in constructor.

    0 讨论(0)
提交回复
热议问题