1

私はアスペクト指向プログラミングの概念を学ぼうとしており、そのために城プロジェクトの動的プロキシを使用しています。私が書いたサンプルコードを見てください。

インターセプターはインターセプトしていないようです? または、コンソール ウィンドウに「内部インターセプター、呼び出し前」と「内部インターセプター、呼び出し後」が表示されません。ここで何が間違っているのか教えてください。

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;
    }
}
4

2 に答える 2

2

「CreateClassProxy」メソッドの署名を詳しく調べたところ、プロキシが仮想メソッドのみをインターセプトすることに気付きました。以下のようにコードを変更すると、問題なく動作するようになりました。

皆さんありがとう。

public virtual int add(int x, int y)
    {
        Console.WriteLine("Inside method");

        return x + y;
    }
于 2013-03-20T16:18:59.447 に答える
0

インターフェイスを使用して、そこからクラスとプロキシを派生させてみてください。

于 2013-03-20T16:17:54.500 に答える