Unity(1)控制反转
控制反转
依赖注入方式 DI Types(Dependency injection)
接口注入
在接口中定义需要注入的信息。
首先定义一个接口,组件的注入将通过这个接口进行,该接口应由组件提供者提
供,任何想使用该组件的类都必须实现这个接口。
public interface ILog
{
void Log(string message);
}
public interface ILogInject
{
void InjectLog(ILog log);
}
public class client:ILogInject
{
}
抽象工厂模式
将对象间的依赖关系转移到接口上,在调用时由容器来组装
构造函数注入
根据构造函数的类型调用Create方法建立实体对象,然后将对象传给构造函数
降低构造函数与实体对象之间的关联性
属性注入
与构造函数注入基本类似
Unity特点:
1.支持自定义容器
2.对要注入的类型没限制,除了属性注入和方法注入需要【Dependency】特性标注,对类声明没特别要求
3.支持容器层次结构
4.支持配置文件
什么时候使用
1.类或者对象依赖与别的类或者对象
2.依赖关系比较复杂或者需要进一步提前
3.想利用DI
4.想管理对象实例生命周期
5.希望在运行时改变依赖关系
6.希望在Web 应用程序回复时可以缓存或者持久化依赖关系