C# Unity容器的使用
时间:2020-08-24 16:41:57
收藏:0
阅读:62
- 最简单的使用方式(记得安装Unity NuGet包呀)
Console.WriteLine("***************Unity容器的初步应用***************");
IUnityContainer container = new UnityContainer();//1 声明一个容器
container.RegisterType<IPhone, AndroidPhone>();//2 初始化容器 注册类型
IPhone phone = container.Resolve<IPhone>();//3 反射创建对象
phone.Call();
- 当你想使用一个接口 注册不同类型是 你需要指定名称 像下面这样 child、grandchild 便是指定的名称
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)