0

私は C# + Unity (2.1) を使用しています。メソッドのインターセプトは、外部からの呼び出しの場合は正常に機能しますが、同じクラス内のメソッド間では、最初のメソッドのみがインターセプトされます。例えば:

    [InterceptorAttribute]
    public int A(int a, int b)
    {
         return B(a, b);
    }

    [InterceptorAttribute]
    public int B(int a, int b)
    {
         return a+b;
    }

メソッド B() の呼び出しはインターセプトされません。誰でも助けることができますか?

4

1 に答える 1

3

傍受がどのように実装されているかを見ると、なぜこれが起こるのかが明らかになります。インターセプターは基本的に、関連するハンドラーを呼び出すだけでなく、元のオブジェクトをラップして呼び出しを転送するプロキシです。

public int A(int a, int b)
{
  callHandlers();
  return originalObject.A(a, b);
}

public int B(int a, int b)
{
  callHandlers();
  return originalObject.B(a, b);
}

2 つの呼び出しは個別にインターセプトoriginalMethod.Aされますが、 が呼び出されると、 への呼び出しBは のみを呼び出しoriginalObject.B、 は呼び出しませんproxy.B

おそらく、インターセプトを何に使用しているのかを説明すれば、あなたがやろうとしていることに対するより良い解決策があるかもしれません.

于 2012-09-01T06:04:24.657 に答える