拦截器拦截不C#,城堡动态代理
问题描述:
我努力学习面向方面编程的概念,我使用城堡项目动态代理为。请参阅我写的示例代码。拦截器拦截不C#,城堡动态代理
拦截器似乎没有拦截?或者我没有在我的控制台窗口中看到“在调用之前的内部拦截器,”和“内部拦截器,在调用之后”。请建议我在这里做错了什么?
class AOP
{
static void Main(string[] args)
{
ProxyGenerator generator = new ProxyGenerator();
actual logger = generator.CreateClassProxy<actual>(new proxyforactual());
logger.add(3, 2);
}
}
public class proxyforactual : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine("Inside interceptor, before the call");
invocation.Proceed();
Console.WriteLine("Inside interceptor, after the call");
}
}
public class actual
{
public int add(int x, int y)
{
Console.WriteLine("Inside method");
return x + y;
}
}
答
尝试使用接口并从中派生你的类和代理。
答
我的坏,在“CreateClassProxy”方法的签名仔细观察后,我注意到,代理将只截取虚拟方法。改变了我的代码,如下所示,现在工作正常。
谢谢大家。
public virtual int add(int x, int y)
{
Console.WriteLine("Inside method");
return x + y;
}