我正在尝试在 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 中,因此它们会被执行两次。LogAspect 有什么方法可以抑制方法 1 和方法 2 中的 Log.Start() 和 Log.Stop() 并在进入和退出时单独执行自己的功能。如果不是任何其他解决方案,因为我是 AOP 的新手,这在 Postsharp 中是否可行?这里的核心点是将现有应用程序更改为方面所需的最小更改。