2012-03-28 17 views
1

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

或者:我如何可以配置在统一配置的类的类型参数?

<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> 

回答

2

的< typeConfig>元素简单地删除 - 这是XML的层实际上并没有,但噪音添加任何配置文件。以前嵌套在typeConfig中的东西(如<构造函数>,< param>等)现在被放置为< register>元素的子元素。

至于你的榜样在那里,你需要指定泛型类型参数作为mapTo参数的一部分,就像这样:

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

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

注意:当然,上面的别名将不起作用,因为您没有在其中包含程序集名称,所以在解决这些细节之前,此解决方案将不起作用。另外,请考虑在配置文件中使用<程序集>和<命名空间>声明来消除大量别名的需要。

+0

感谢您的详细信息!为了便于阅读,我省略了命名空间/程序集细节,但是我忘记提及'SomeType'实际上有_two_通用参数,而'ISomeInterface'实际上有_one_。快捷方式语法是否提供了一种通过配置提供一个通用参数的方法,另一种解决方法? '' – Ropstah 2012-03-29 08:06:29