我正在尝试将我找到的示例转换为XML配置..
如果这是我在代码中所做的事情;
IUnityContainer unityContainer = new UnityContainer();
unityContainer.RegisterType<IServiceProxy<ITestService>, ServiceProxy<ITestService, TestServiceClient>>();
我在XML中做什么?我正在尝试这个,但我错过了一些东西;
<unity>
<typeAliases>
<typeAlias alias="IServiceProxy" type="WCF.IServiceProxy, WCF" />
<typeAlias alias="ITestService"type="Interfaces.ITestService, Interfaces" />
<typeAlias alias="IServiceProxy[ITestService],ServiceProxy[ITestService,TestServiceClient]]" />
</typeAliases>
<containers>
<container name="servicesContainer">
<type type="IServiceProxy" mapTo="ServiceProxy" />
<type type="ITestService" mapTo="TestService" />
</container>
</containers>
</unity>
答案 0 :(得分:2)
我只知道Unity 2.0语法,这不是它。例如,type
节点应为register
,并且任何版本的Unity都不支持containers
节点。您是否有可能查看旧/差文档?
确保您使用的是Unity 2.0。然后开始阅读Using Design-Time Configuration
只是扫描你的xml一些其他问题:
Specifying Types in the Configuration File将帮助您使用别名语法。
答案 1 :(得分:0)
你的别名在你的例子中完全没有了。您不能在别名中使用方括号语法,必须使用CLR类型语法。在最后一个别名中,您只需提供一个别名,这是一个很长的字符串,但您从不指定类型。您也永远不会提供ServiceProxy别名,因此该名称不存在且无法找到。
假设您使用的是Unity 2.0,并且已添加了相应的&lt; namespace&gt;和&lt; assembly&gt; XML中的节点指向程序集,这应该可以工作:
<unity>
<namespace name="WhateverYourNamespaceIs" />
<assembly name="AndWhateverAssembliesAre" />
<container name="servicesContainer">
<register type="IServiceProxy[ITestService]" mapTo="ServiceProxy[ITestService, TestServiceClient]" />
</container>
</unity>