簡體   English   中英

ChannelFactory如何? <T> .CreateChannel工作?

[英]How does the ChannelFactory<T>.CreateChannel work?

如果我有一個界面:

public interface ISomething
{
    void DoAThing();
}

然后我用ChannelFactory實例化它:

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

我得到了一個我可以使用的實例。

現在,關閉它我需要施放:

((IClientChannel)channel).Close

要么

((IChannel)channel).Close

要么

((ICommunicationObject)channel).Close

我的ISomething接口不會繼承任何這些接口。

那么CreateChannel方法返回的是什么類型的對象?它是如何構造一個動態對象的,它能夠實現一個直到運行時才知道的接口?

ChannelFactory.CreateChannel()返回RealProxy的一個實現,它是一組工具的一部分,通常稱為TransparentProxy或“Remoting”,這是一個稍微過時的pre-wcf技術。 為了創建實現接口的實際類,它歸結為一個名為RemotingServices .CreateTransparentProxy(...)的內部框架級方法,我沒有看過,但很可能是某些類的類構建器/發射器。

正如你所問,你可能想要自己做這樣的事情。 要在運行時實現接口,我建議使用Castle Dynamic Proxy來實現接口或抽象類而不需要太多努力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM