我有一个项目,我正在尝试使用 DI。我正在使用 Unity,对于正常的装配和注入(inject)来说,一切似乎都运行良好。
我正在尝试进一步打破与 WCF 服务的依赖关系。我要注入(inject)的 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 服务映射到接口(interface),以便我可以使用构造函数注入(inject)
在 web.config 中,法线映射使用“mapTo”发生,您可以在其中指定接口(interface)别名和您之前定义的类的别名。
<type type="IMyService" mapTo="MyService">
<lifetime type="singleton"/>
</type>
由于 WCF 服务代理是在运行时动态创建的,因此我没有对“MyService”类的引用,而是需要从服务的 “BasicHttpBinding_IMyService”
端点中提取。
关于如何实现这一点有什么想法吗?
最佳答案
我从配置文件中看到这个工作的唯一方法是创建一个实现 IMyService 的 MyService 类 - 在幕后它创建自己的 Channel(使用 ChannelFactory 代码片段)并且基本上充当代理。
但与其这样,为什么不直接调用
RegisterInstance<IMyService>(myServiceChannelInstance)
在你的统一容器上并传入一个已经创建的 MyService channel 实例?
关于.net - 通过 web.config 对 WCF 服务的 Unity 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066490/