在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中是否有等价物?
答案 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的标准部分)。看得出来 我第二次谈到它 在很多天里,我认为这是值得的 博客...