什么是<typeconfig>的Unity 2替换?</typeconfig>

时间:2012-03-28 13:24:34

标签: generics configuration unity-container

正如标题所述:什么(如果可用)是Unity 2中<typeConfig />元素的替换?

或者:如何在Unity配置中为类配置类型参数?

<alias alias="ISomeInterface" type="Namespace.ISomeInterface" />
<alias alias="SomeType" type="Namespace.SomeType`1" />
<alias alias="Foo" type="Namespace.Foo" />
<alias alias="Bar" type="Namespace.Bar" />

<container>
    <register type="ISomeInterface" mapTo="SomeType" name="GenericFoo">
        <!-- define generic type as Foo -->
    </register>
    <register type="ISomeInterface" mapTo="SomeType" name="GenericBar">
        <!-- define generic type as Bar -->
    </register>
</container>

1 个答案:

答案 0 :(得分:2)

&lt; typeConfig&gt;简单地删除了元素 - 它是一层XML,实际上并没有向配置文件添加任何噪声。您之前嵌套在typeConfig中的内容(如&lt; constructor&gt;,&lt; param&gt;等)现在被放置为&lt; register&gt;的子项。元件。

至于你的例子,你需要将泛型类型参数指定为mapTo参数的一部分,如下所示:

<register type="ISomeInterface" mapTo="SomeType[Foo]" name="GenericFoo" />
<register type="ISomeInterface" mapTo="SomeType[Bar]" name="GenericBar" />

或者你可以使用CLR泛型类型语法(带有`1等的版本),但这比Unity在这里实现的快捷语法要吵得多。

注意:当然,您上面的别名将无法使用,因为您没有在其中包含程序集名称,因此在您计算出这些详细信息之前,此解决方案将无法运行。另外,请考虑使用&lt; assembly&gt;和&lt; namespace&gt;配置文件中的声明,以消除对大量别名的需要。