2009-07-16 135 views
2

創建一個簡單的類來測試PostSharp中的OnExceptionAspect。PostSharp OnExceptionAspect不按預期方式工作

[Serializable] 
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] 
public class ExceptionSwallower : OnExceptionAspect 
{ 
    public override void OnException(MethodExecutionEventArgs eventArgs) 
    { 
     eventArgs.FlowBehavior = FlowBehavior.Return; 
     base.OnException(eventArgs); 
    } 
} 

添加的屬性的方法

[ExceptionSwallower] 
    public void SomeMethod() 
    { 
     throw new Exception(); 
    } 

和調用它。

然而,異常實際上並沒有吞噬,這似乎很奇怪。

我一直沒能找到任何類似的問題,所以我希望有我沒有得到正確的一些次要的事情。任何人?

回答

0

有時,它幫助看看使用反射所得到的組件。 PostSharp生成純粹的.NET程序集,沒有魔法。

+8

Pfft ...來吧Gael,我們都知道PostSharp引用System.Magic。 – 2012-05-24 01:54:03

3

您可以查看構建輸出: 它可以給一些提示參與後處理與否,例如 POSTSHARP:postsharp警告PS0131:模塊'YourAssembly.dll'不包含任何方面或其他轉換。爲了提高構建時間性能,請考慮通過在項目中設置編譯符號(又名常量)'SkipPostSharp'來禁用此模塊的PostSharp,或者設置MSBuild屬性'SkipPostSharp = True'。 :消息:PostSharp完成 - 0錯誤,1警告,服務於1637年ms

+0

+1使我意識到我的方面不工作的原因是因爲我將SkipPostSharp常量設置爲true,因爲直到現在我沒有在此項目中使用方面。 – 2012-05-24 01:56:46