Postsharp を使用して、既存のアプリケーションに AOP を実装しようとしています。
既存のアプリケーションのメソッドは、入口と出口で特定の呼び出しを行います
class Test
{
Method1()
{
Log.Start()
//code
Log.Stop()
}
Method2
{
Log.Start()
//code
Log.Stop()
}
}
ここで、LogAspect を含むアスペクトを宣言するとします。
public override void OnEntry(MethodExecutionArgs args)
{
Log.Start();
}
public override void OnExit(MethodExecutionArgs args)
{
Log.Stop();
}
今、私はこの側面をテストクラスに使いたいと思っています
だから私はこれをします。
[LogAspect()]
class Test
{
method1()
{
}
method2()
{
}
}
これで、LogAspect がすべてのテスト メソッドに適用されます。
しかし、 Log.Start() 、 Log.Stop() は既に method1 と method2 に存在するため、2 回実行されます。LogAspect が method1 と method2 で Log.Start() と Log.Stop() を抑制し、入口と出口で独自の機能を単独で実行する方法はありますか。私はAOPに慣れていないので、他のソリューションではない場合、Postsharpでこれは可能ですか? ここでの核心は、既存のアプリケーションをアスペクトに変更するために必要な最小限の変更です。