0

私は単純なインターフェースを持っています:

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();
    }
}

ここで、そこで 2 つのメソッドを実行すると、次のようになります。

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

私のインターセプターは2回呼び出しています。しかし、Method2() の本体のコメントを外すと、Method1() のインターセプターは呼び出されません。インターセプターを発射させたいので、どうするか探しています。2番目から Method1 を呼び出すと、これが生成されたプロキシによって呼び出されないことがわかり、それが機能しない理由です。しかし、同じ方法でそれを行うことは可能ですか?

4

1 に答える 1

1

Ninject は、Test クラスの実際のインスタンスの周りにプロキシ オブジェクトを作成します。メソッドは仮想ではないため、プロキシのオーバーライドは「オーバーライド」ではなく「新規」で作成する必要があります。したがって、Method2 から Method1 を呼び出す場合、プロキシを見つけて呼び出すための仮想ルックアップはありません。

于 2012-11-15T15:34:32.103 に答える