Я пытаюсь использовать единство для разрешения общего экземпляра 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
изолированно, он говорит, что он не может избавиться от неоднозначности от других конструкторов, принимающих один параметр (хотя я определил тип параметра длябыть строкой!)
Любые идеи или указатели, что я делаю не так, здесь выглядывает?Или, может быть, даже решение; -)
Спасибо