什么是Java的Dynamic Proxies的.Net等价物?

时间:2009-07-16 17:07:41

标签: java .net dynamic proxy

在java中,可以使用动态代理动态实现接口,如下所示:

public static <T> T createProxy(InvocationHandler invocationHandler, Class<T> anInterface) {
    if (!anInterface.isInterface()) {
        throw new IllegalArgumentException("Supplied interface must be an interface!");
    }
    return (T) Proxy.newProxyInstance(anInterface.getClassLoader(), new Class[]{anInterface}, invocationHandler);
}

.Net中是否有等价物?

5 个答案:

答案 0 :(得分:5)

有几个库在.NET中实现这一点。 Here's a list of them,带有基准。

答案 1 :(得分:5)

最广泛使用的是Castle Project's Dynamic Proxy,它也被几个(或至少1个)模拟框架使用。请记住,默认情况下,dotnet中的方法(以及类似属性等加糖方法)不是虚拟的,因此如果您没有在类设计中预期它,可能会产生一些麻烦。

答案 2 :(得分:2)

是。您派生自抽象RealProxy class

答案 3 :(得分:1)

同样看看PoshSharp(.NET的AOP框架) - 它可以做类似的事情,但是在编译时。可能你更喜欢它支持的方法。

答案 4 :(得分:0)

没有直接等效项,但有些解决方法请参阅How to do Dynamic Proxies in C#

  

背景:动态代理   动态生成一个类   符合特定的运行时   接口,代理所有调用   一种“通用”方法。

     早些时候,斯特尔斯米问是不是   可以在.NET中做到这一点(它是一个   Java的标准部分)。看得出来   我第二次谈到它   在很多天里,我认为这是值得的   博客...