Unity是微软企业库4.0加入的一个Ioc容器,具体介绍可以访问相关网站(codeplex、MSDN),这里制作简单说明。
The Unity Application Block (Unity) 是一个轻量级, 可扩展的DI(dependency injection)容器,支持构造器注入,属性注入和 method call injection. 主要提供如下的好处:
至于三个模式,这里不做详细描述Inversion of Control (IoC) pattern、Dependency Injection (DI) pattern、Interception pattern。
Unity支持container-configured injection, constructor injection, property injection, and method call injection。
Unity Application Block暴露两个方法用来通过容器注册和映射:
Container-Configured Registration of Types
下面的例子通过重载RegisterType 和 Resolve方法注册一个IMyService接口的映射,指定容器返回一个CustomerService类(实现IMyService接口)的实例
Container-Configured Registration of Existing Object Instances
Constructor Injection
构造函数依赖注入,当通过 Resolve 方法 调用容器的时候,容器自动创建该类构造函数中参数依赖的类的实例。例如在接下来的代码中CustomerService类依赖LoggingService.(类依赖的关系可以参考OOAD或UML书籍)。
调用
Property (Setter) Injection
接下来的代码说明属性注入. ProductService 类暴露一个使用另一个类SupplierData实例的属性,使用Dependency attribute标注该属性.
创建ProductService类实例的时候,Unity Application Block自动生成一个SupplierData类的实例并且 and sets it as the value of the SupplierDetails property of the ProductService class.