【发布时间】:2010-09-21 11:21:12
【问题描述】:
我正在尝试使用统一来解析IChannelFactory<ISomeType> 的通用实例,以创建通向我编写的服务的通道。
问题是这个类ChannelFactory<ISomeType>的具体版本将具体类型System.ServiceModel.Channels.Binding作为参数。
我的第一个问题是找不到System.ServiceModel,但我通过输入超级完全限定名称(包括版本号等)解决了这个问题。所以现在我可以闯入代码但是当我尝试解决IChannelFactory时它会爆炸
我的配置是这样的:
<!--binding-->
<type name="customerBinding" type="System.ServiceModel.BasicHttpBinding, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">
<constructor>
<param name="configurationName" parameterType="System.String">
<value value="CustomerAccountService" />
</param>
</constructor>
</typeConfig>
</type>
<!-- customer account channel factory -->
<type name="customerChannelFactory"
type="System.ServiceModel.Channels.IChannelFactory`1[[ServiceContracts.Customer.ICustomerAccountProvider, ServiceContracts.Customer]], System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
mapTo="System.ServiceModel.ChannelFactory`1[[ServiceContracts.Customer.ICustomerAccountProvider, ServiceContracts.Customer]], System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">
<constructor>
<param name="binding" parameterType="System.ServiceModel.Channels.Binding, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<dependency name="customerBinding" />
</param>
</constructor>
</typeConfig>
</type>
我得到的错误是它无法构造类型,因为它是一个接口,即使到具体类型的映射显然存在。请注意,我试图将类型解析限制为特定类型,因此它仅适用于 IChannelFactory<ISomeType> 而不是 IChannelFactory<ISomeOtherType>,例如。也许这不是正确的做事方式?
如果我只是尝试单独解决Binding,它表示它无法与其他采用一个参数的构造函数消除歧义(即使我将参数类型定义为字符串!)
任何想法或指示我在这里做错了什么?或者甚至是一个解决方案;-)
谢谢
【问题讨论】:
-
很高兴看到当我尝试使用 Unity 进行任何重要的事情时,我并不是唯一一个永远无法弄清楚发生了什么的人!
-
哈哈,我刚刚在两秒钟前阅读了您关于统一和泛型的问题!顺便说一句,不错的公敌参考 :-)
-
你是用注册名解析吗?
标签: .net generics unity-container