Generics Unity 2替代<;类型配置/>;?
正如标题所述:Unity 2中的Generics Unity 2替代<;类型配置/>;?,generics,configuration,unity-container,Generics,Configuration,Unity Container,正如标题所述:Unity 2中的元素的替代品是什么(如果可用)? 或者:如何在Unity配置中为类配置类型参数 <alias alias="ISomeInterface" type="Namespace.ISomeInterface" /> <alias alias="SomeType" type="Namespace.SomeType`1" /> <alias alias="Foo" type="Namespace.Foo" /> <alias
元素的替代品是什么(如果可用)?
<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>
该元素只是被删除了——它是一层XML,实际上只向配置文件添加了噪音。以前嵌套在typeConfig中的内容(如等)现在作为元素的子元素放置
对于您的示例,您需要将泛型类型参数指定为mapTo参数的一部分,如下所示:
<register type="ISomeInterface" mapTo="SomeType[Foo]" name="GenericFoo" />
<register type="ISomeInterface" mapTo="SomeType[Bar]" name="GenericBar" />
或者您可以使用CLR泛型类型语法(带有'1等'的版本),但这比Unity在这里实现的快捷语法噪音大得多
注意:当然,您上面的别名不起作用,因为您没有将程序集名称包含在其中,所以在您解决这些细节之前,此解决方案不会起作用。此外,考虑使用配置文件中的声明和声明来删除对别名的需要。为了可读性,我省略了名称空间/程序集细节,但是我忘记了提到
SomeType
实际上有两个泛型参数,而isomointerface
实际上有一个泛型参数。快捷方式语法是否提供了通过配置提供一个泛型参数和在解析时提供另一个泛型参数的方法<代码>`