ninject拦截器 - 辅助方法

时间:2012-11-15 12:04:45

标签: ninject aop interceptor

我有一个简单的界面:

public interface ITest
{
      void Method1();
      void Method2();
}

和实施:

public class Test:ITest
{
      public void Method1()
      {

      }
      public void Method2()
      {
           //Method1();
      }
}

自定义拦截器:

public class CustomInterceptor:IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
          invocation.Proceed();
    }
}

现在,当我执行两种方法时:

ITest obj = getting through ninject
obj.Method1();
obj.Method2();

我的拦截器正在调用两次即可。 但是当我取消注释Method2()的主体时,不会调用Method1()的拦截器。我正在寻找该做什么,因为我想要拦截拦截器。 当我从第二个调用Method1时,我知道生成的代理不会调用它,这就是为什么它不起作用。但是有可能以同样的方式做到吗?

1 个答案:

答案 0 :(得分:1)

Ninject围绕Test类的实际实例创建一个代理对象。您的方法不是虚拟的,因此应使用“new”而不是“override”创建代理的任何覆盖。因此,如果从Method2调用Method1,则没有虚拟查找来查找代理并调用它。