gpt4 book ai didi

.net - 通过 web.config 对 WCF 服务的 Unity 依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-02 00:42:51 26 4
gpt4 key购买 nike

我有一个项目,我正在尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com