У меня есть проект, в котором я экспериментирую с DI. Я использую Unity, и все кажется хорошо работающим для обычных сборок и инъекций.Unity Dependency Injection of WCF service через web.config
Я пытаюсь далее разорвать зависимости с услугами WCF. Службы WCF, что я хочу, чтобы впрыснуть создаются во время выполнения в настоящее время без использования DI и не использовать .net VS генерироваться прокси:
MyService = new ChannelFactory<IMyService>("BasicHttpBinding_IMyService").CreateChannel();
конечных точки для вышеперечисленного в web.config:
<endpoint address="http://localhost:35806/MyService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService"
contract="Interfaces.IMyService" name="BasicHttpBinding_IMyService" />
Я пытаюсь выяснить, как отобразить эту службу WCF к интерфейсу через web.config, так что я могу использовать инъекции конструктора
в web.config нормальное отображение происходит с помощью «МАПТО», где вы будет указывать псевдоним интерфейса и псевдоним для класса, который вы ранее d efined.
<type type="IMyService" mapTo="MyService">
<lifetime type="singleton"/>
</type>
Поскольку прокси-сервер WCF службы создается динамически во время выполнения, я не эта ссылка на «MyService» класс вместо этого нужно вытащить из "BasicHttpBinding_IMyService"
конечной точки службы.
Любые идеи о том, как это можно сделать?
+1 То, что вы только что описали, является абстрактной фабрикой - это одно из стандартных решений для общих задач DI. –
@Bryan: Спасибо, я понял, что могу использовать экземпляр, чтобы сделать это во время выполнения, но я пытался придерживаться web.config для всего. То, что я думаю, что я собираюсь закончить, состоит в том, что пользовательский фрагмент в моем web.config сопоставляет конечную точку службы с интерфейсом, а затем перебирает их во время выполнения. Таким образом, он не должен быть встроен в мое приложение. Теперь я оставлю это открытым, чтобы узнать, есть ли у кого-то альтернативы для этого с родными разделами конфигурации Unity. – Jay