我有一個項目,我正在嘗試使用DI。我正在使用Unity,並且對於普通程序集和注入來說,事情似乎很有效。通過web.config統一依賴注入WCF服務
我想進一步打破WCF服務的依賴關係。我想注入WCF服務在運行時創建當前不使用DI,我不使用VS .NET生成的代理:
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" />
我試圖找出如何通過web.config中這個WCF服務映射到一個接口,這樣我可以使用構造函數注入
在web.config中的法線貼圖出現使用「mapTo」在那裏你將指定接口別名和以前d類的別名efined。
<type type="IMyService" mapTo="MyService">
<lifetime type="singleton"/>
</type>
由於WCF服務代理是在運行時動態創建的我沒有這個參考「的MyService」類,而不是它需要從"BasicHttpBinding_IMyService"
端點服務拉動。
關於如何完成這一任何想法?
+1你剛剛描述的是一個抽象工廠 - 它是常見DI挑戰的標準解決方案之一。 – 2010-01-15 09:23:06
@Bryan:謝謝我意識到我可以在運行時使用該實例來完成此任務,但我試圖堅持使用web.config來完成所有任務。 我想我最終會做的是在我的web.config中將自定義部分映射到接口的服務端點,然後在運行時循環這些部分。這樣它就不必嵌入我的應用程序中。我將暫時打開此文件,以查看是否有人可以使用本機Unity配置部分進行此操作。 – Jay 2010-01-15 19:37:34