【发布时间】:2013-09-12 09:20:13
【问题描述】:
如果我有接口:
public interface ISomething
{
void DoAThing();
}
然后我用 ChannelFactory 实例化它:
var channel = new ChannelFactory<ISomething>().CreateChannel
我得到了一个可以使用的实例。
现在,要关闭它,我需要强制转换:
((IClientChannel)channel).Close
或
((IChannel)channel).Close
或
((ICommunicationObject)channel).Close
我的 ISomething 接口不继承任何这些接口。
那么 CreateChannel 方法返回了什么样的对象,它是如何构造一个能够实现在运行时才知道的接口的动态对象?
【问题讨论】:
-
如果您喜欢使用 dotPeek 或 Reflector 等反编译器进行挖掘,您可以自己钻研兔子洞看看...
-
我不认为它是一个
dynamic对象,只是一个生成的对象。在 .NET 中生成代码相对容易。