配置容器configuring Containsers
容器可以在运行时配置,相反的也可以通过应用程序的配置文件(或扩展配置文件)来配置。
Unity的三个高级功能:泛型装饰链、解析器重写和数组注入。
1、配置开放式泛型来解析封闭式泛型
只要不是为封闭型泛型指定更具体的类型,就通过开放型泛型来配置适用于任何封闭型类型。
<register type="IRepository[]" mapTo="DebugRepository[]"/>
容器将自动解析IRepository<StockQuote>为DebugRepository<StockQuote>;
2、泛型装饰链
在实际的开发中还会用到装饰模式,可以配置Unity容器来支持装饰类的注入;
使用ParameterOverride()方法,可以对类型参数重写;并通过OnType()加以限定;否则将会出现异常;
3、数组注入
容器提供了ResolvedArrayParameter为构造函数或属性提供值
ResolvedArrayParameter<接口或基类>(成员1,成员2,...)