C# Unity容器的使用

时间:2020-08-24 16:41:57   收藏:0   阅读:62
               Console.WriteLine("***************Unity容器的初步应用***************");
               IUnityContainer container = new UnityContainer();//1 声明一个容器
               container.RegisterType<IPhone, AndroidPhone>();//2 初始化容器 注册类型
               IPhone phone = container.Resolve<IPhone>();//3 反射创建对象
               phone.Call();
               container.RegisterType<AbstractPad, ApplePad>();//抽象类      
               container.RegisterType<AbstractPad, ApplePad>("child");//1对多
               container.RegisterType<AbstractPad, ApplePadChild>("grandchild");//1对多

这样在你创建时 你可以像下面这样 指定创建

               AbstractPad pad = container.Resolve<AbstractPad>();
               var childPad = container.Resolve<AbstractPad>("child");
               var grandchildPad = container.Resolve<AbstractPad>("grandchild");

否则 注册是会出现覆盖的情况的 如下

               container.RegisterType<AbstractPad, ApplePad>();//抽象类
               container.RegisterType<AbstractPad, ApplePadChild>();//覆盖的

若是此时你创建对象 则pad将是 ApplePadChild类型

 var pad = container.Resolve<AbstractPad>();
                container.RegisterType<AbstractPad, ApplePad>();//抽象类
                container.RegisterType<ApplePad, ApplePadChild>();//父子类  会覆盖<AbstractPad, ApplePad>  因为这个也是AbstractPad 

此时创建对象 则pad也是 ApplePadChild类型

 var pad = container.Resolve<AbstractPad>();
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!