gpt4 book ai didi

c# - ChannelFactory.CreateChannel 是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 12:46:47 25 4
gpt4 key购买 nike

如果我有一个接口(interface):

public interface ISomething
{
void DoAThing();
}

然后我用 ChannelFactory 实例化它:

var channel = new ChannelFactory<ISomething>().CreateChannel

我得到一个我可以使用的实例。

现在,要关闭它,我需要转换:

((IClientChannel)channel).Close

((IChannel)channel).Close

((ICommunicationObject)channel).Close

我的 ISomething 接口(interface)没有继承任何这些接口(interface)。

那么 CreateChannel 方法返回了什么样的对象,它是如何构造一个动态对象的,这个对象能够实现一个它在运行时之前不知道的接口(interface)?

最佳答案

ChannelFactory.CreateChannel()返回 RealProxy 的实现,它是通常称为 TransparentProxy 或“Remoting”的一组工具的一部分,这是一种稍微过时的 pre-wcf 技术。为了创建实现接口(interface)的实际类,它归结为一个名为 RemotingServices 的内部框架级方法。 .CreateTransparentProxy(...),我没有看过,但很可能是某种类生成器/发射器。

如您所问,您可能想自己做这样的事情。要在运行时实现接口(interface),我推荐 Castle Dynamic Proxy无需太多努力即可实现接口(interface)或抽象类。

关于c# - ChannelFactory<T>.CreateChannel 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18760279/

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