Я пытаюсь использовать единство, чтобы разрешить общий экземпляр 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! – fearofawhackplanet
haha Я просто читал ваш вопрос о единстве и дженериках две секунды назад! Хорошая ссылка со стороны врага, кстати :-) – WickyNilliams
Вы решаете с именем регистрации? –