【发布时间】:2012-01-13 07:02:08
【问题描述】:
我想构建一个动态代理对象来为对象添加某些功能。
基本上我想接收一个对象,用一个看起来与我得到的原始对象相同的对象包装它,然后拦截所有调用。
class Wrapper : DynamicProxy// dynamic proxy is not a reall class, but i guess something like this exists...
{
public static T Wrap(T obj)
{
return (T) new Wrapper(obj);
}
public override object InterceptCall(MethodInfo info, object[] args)
{
// do stuff
}
}
澄清一下,我想做一些类似于 WCF 通道工厂的事情...
我正在添加赏金,因为我需要一种代理类(而不是接口)和处理非虚拟方法的好方法(就像我在“new”关键字下继承并添加了一个方法一样)。 我确信这一切都是 .Net 实现的。
【问题讨论】:
-
@np-hard 如果您将此作为答案发布,我会接受...不是 100% 我想要的,但已经足够了。
-
你知道要在编译时代理的类型,还是只在运行时代理?
-
@Sneal 仅在运行时。可能我会在编译时知道它,但我想保持灵活性......
-
这肯定会让事情变得更加困难,因为 Castle DynamicProxy 只能拦截虚拟方法。我认为您无法使用分析 api。
标签: c# .net reflection proxy aop