最后对PostSharp Exception方面采取行动

时间:2012-03-04 13:14:45

标签: postsharp

我得到以下情况

private volatile bool _inProgress = false;

public void DoSomethingStart()
{
  if(_inProgress == false)
  {
      foo.BeginInvoke(null, null); // DoSomething
      _inProgress = true;
  }
}

[CatchAllExceptionsFromHere]
private void DoSomething()
{ }

这些方面到目前为止有效。所有异常都来自CatchAllExceptionsFromHere。但我想在方面的finally子句中设置“_inProgress = false” - 所以如果DoSomething已经完成“_inProgress”应该设置为false。由于属性不能占用任何对象 - 是否有解决方法?

谢谢迈克尔

1 个答案:

答案 0 :(得分:2)

方面可以在声明上设置值来设置属性值,或者像构造函数一样。你想要的是一个OnMethodBoundaryAspect和OnExit方法(即使发生错误也会触发,所以它就像一个finally),你想要设置_inProgress的值。

但是,方面需要是一个实例方面,您需要导入_inProgress成员或只是引入它以便方面可以访问它。这取决于您的班级是否需要访问它。如果它有方面导入成员。阅读有关如何使用这些链接执行这些操作的信息