gpt4 book ai didi

c# - __TransparentProxy 是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:54 24 4
gpt4 key购买 nike

在使用WCF时,我们可以定义一个服务契约:

[ServiceContract]
public interface IMyService
{
[OperationContract]
int MyOperation(int x);
}

假设我在 www.example.com/MyService 打开一个服务主机,那么从我的客户端使用此服务的一种方法是

IMyService service =
new ChannelFactory<IMyService>(new BasicHttpBinding(),
new EndpointAddress("www.example.com/MyService")).CreateChannel();
int result = service.MyOperation(10);

因此,service 以某种方式实现了 IMyService,尽管这从未明确完成。如果我调试这些行,我可以看到 service__TransparentProxy 的一个实例.从源代码可以看出,该类中的注释是

Transparent proxy magically creates a message that represents a call on it and delegates to the Real proxy to do the real remoting work.

对我来说这确实是“魔法”,但我想一定有一个合乎逻辑的解释。


这里的模式非常有用。我想要的是像下面的 Magic 这样的类(语法不正确,我知道,否则我不需要问)。为了争论起见,假设我希望此类打印所调用方法的名称。

public class Magic<T> : T {
// don't know what to do here
}

这样我就可以打电话

IMyService service = new Magic<IMyService>();
service.MyOperation(10);

这将打印:

MyOperation

这样的事情可能吗? (应该是,因为 __TransparentProxy 做了类似的事情。)如果是这样,它是如何工作的?

最佳答案

Codeplex 上有几篇文章试图做一些类似于 WCF 在幕后所做的事情:

http://www.codeproject.com/Articles/43598/Emit-Proxy http://www.codeproject.com/Articles/5511/Dynamic-Proxy-Creation-Using-C-Emit

System.Reflection.Emit 命名空间是底层键,可用于在代码中动态创建 .NET 程序集和类型。

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

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