當使用WCF,我們可以定義一個服務合同:__TransparentProxy如何工作?
[ServiceContract]
public interface IMyService
{
[OperationContract]
int MyOperation(int x);
}
假設我在www.example.com/MyService
打開一個ServiceHost的,然後從我的客戶使用該服務的一個方法是
IMyService service =
new ChannelFactory<IMyService>(new BasicHttpBinding(),
new EndpointAddress("www.example.com/MyService")).CreateChannel();
int result = service.MyOperation(10);
所以不知何故,service
實施IMyService
,雖然這從來沒有明確做過。如果我調試這些線路,我可以看到service
是__TransparentProxy
的一個實例。正如你可以從源代碼中看到,在該類評論說
透明代理神奇創建一個代表它,並委託給真實代理調用做真正的遠程工作的消息。
對我來說這確實是'魔術',但我想必須有一個合理的解釋。
這裏的模式可能非常有用。我想要的是一些類如下面的Magic
(語法不正確,我知道,否則我不需要問)。爲了爭論,讓我們說我希望這個類打印所調用方法的名稱。
public class Magic<T> : T {
// don't know what to do here
}
,這樣我就能夠調用
IMyService service = new Magic<IMyService>();
service.MyOperation(10);
,這將打印:
MyOperation
是這樣的可能嗎? (應該是,因爲__TransparentProxy
做了類似的事情。)如果是這樣,這將如何工作?
有趣!我會看看這些項目,看看他們是否可以提供我需要的功能:) –
好的,這讓我朝着正確的方向發展!非常感謝! –