Unity 笔记(2) 注入方式
2011-07-14 17:25
246 查看
依赖注入方式
属性注入构造函数注入
方法注入
1.属性注入
1.1 具体类型属性注入
public class MyObject { private SomeOtherObject _dependentObject; [Dependency] public SomeOtherObject DependentObject { get { return _dependentObject; } set { _dependentObject = value; } } }
IUnityContainer uContainer = new UnityContainer(); MyObject myInstance = uContainer.Resolve<MyObject>(); // now access the property containing the dependency SomeOtherObject depObj = myInstance.DependentObject;
1.2 接口和抽象类属性注入
public class MyObject { private IMyInterface _interfaceObj; private MyBaseClass _baseObj; [Dependency] public IMyInterface InterfaceObject { get { return _interfaceObj; } set { _interfaceObj = value; } } [Dependency] public MyBaseClass BaseObject { get { return _baseObj; } set { _baseObj = value; } } }
IUnityContainer uContainer = new UnityContainer() .RegisterType<IMyInterface, FirstObject>() .RegisterType<MyBaseClass, SecondObject>(); MyObject myInstance = uContainer.Resolve<MyObject>(); // now access the properties containing the dependencies IMyInterface depObjA = myInstance.InterfaceObject; MyBaseClass depObjB = myInstance.BaseObject;
1.3 给属性注入命名
public class MyObject { private IMyInterface _objA, _objB; [Dependency("MapTypeA")] public IMyInterface ObjectA { get { return _objA; } set { _objA = value; } } [Dependency("MapTypeB")] public IMyInterface ObjectB { get { return _objB; } set { _objB = value; } } }
IUnityContainer uContainer = new UnityContainer() .RegisterType<IMyInterface, FirstObject>("MapTypeA") .RegisterType<IMyInterface, SecondObject>("MapTypeB"); MyObject myInstance = uContainer.Resolve<MyObject>(); // now access the properties containing the dependencies IMyInterface depObjA = myInstance.ObjectA; IMyInterface depObjB = myInstance.ObjectB;
2.构造函数注入
2.1 单构造函数
public class MyObject { public MyObject(MyDependentClass myInstance) { // work with the dependent instance myInstance.SomeProperty = "SomeValue"; // or assign it to a class-level variable } }
IUnityContainer uContainer = new UnityContainer(); MyObject myInstance = uContainer.Resolve<MyObject>();
2.2 参数为接口或者基类注入
public class MyObject { public MyObject(IMyInterface interfaceObj, MyBaseClass baseObj) { // work with the concrete dependent instances // or assign them to class-level variables } }
IUnityContainer uContainer = new UnityContainer() .RegisterType<IMyInterface, FirstObject>() .RegisterType<MyBaseClass, SecondObject>(); MyObject myInstance = uContainer.Resolve<MyObject>();
2.3 多重构造函数通过属性指定注入构造函数
public class MyObject { public MyObject(SomeOtherClass myObjA) { .... } [InjectionConstructor] public MyObject(MyDependentClass myObjB) { .... } }
IUnityContainer uContainer = new UnityContainer(); MyObject myInstance = uContainer.Resolve<MyObject>();
3.方法注入
3.1 方法依赖于具体类
public class MyObject { private SomeOtherObject dependentObject; [InjectionMethod] public void Initialize(SomeOtherObject dep) { // assign the dependent object to a class-level variable dependentObject = dep; } }
IUnityContainer uContainer = new UnityContainer(); MyObject myInstance = uContainer.Resolve<MyObject>();
3.2 方法依赖于抽象类或接口
public class MyObject { private IMyInterface depObjectA; private MyBaseClass depObjectB; [InjectionMethod] public void Initialize(IMyInterface interfaceObj, MyBaseClass baseObj) { depObjectA = interfaceObj; depObjectB = baseObj; } }
IUnityContainer uContainer = new UnityContainer() .RegisterType<IMyInterface, FirstObject>() .RegisterType<MyBaseClass, SecondObject>(); MyObject myInstance = uContainer.Resolve<MyObject>();
相关文章推荐
- Spring学习笔记(3)——Bean的注入方式
- Spring学习笔记(8)----属性注入的方式
- ASP.NET MVC中使用Unity进行依赖注入的三种方式
- Spring学习笔记(二)IOC注入方式
- unity 物体移动方式的一些笔记
- 一个简单的小程序演示Unity的三种依赖注入方式
- Spring学习笔记二(Bean注入的几种方式)
- 一个简单的小程序演示Unity的三种依赖注入方式
- spring学习笔记(1)-spring依赖注入的几种方式
- 依赖注入及企业库Unity组件学习笔记
- Spring笔记(三)---spring四种依赖注入方式
- 微软企业库4.1学习笔记(四十一)依赖注入模块Unity 简介
- 微软企业库4.1学习笔记(四十一)依赖注入模块Unity 简介
- 【unity学习笔记】手机RPG游戏中角色移动方式实现
- Spring2.5.6学习笔记-DI的两种注入方式
- Unity 笔记(1)配置及注入方法
- 微软企业库4.1学习笔记(二十四)Unity依赖注入模块 简介
- Spring在Thread中注入Bean无效的解决方式[嗡汤圆的小笔记]
- 一个简单的小程序演示Unity的三种依赖注入方式
- spring学习笔记13(注解@Autowired方式注入)