2

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();
    }

そしてそれを呼び出しました。

ただし、例外は実際には飲み込まれません。これは奇妙に思えます。

同様の問題を見つけることができなかったので、うまくいかなかった小さなことがあると思います。誰?

4

2 に答える 2

3

ビルド出力を確認できます。後処理が関係しているかどうかのヒントを与えることができます。たとえば、 POSTSHARP : postsharp warning PS0131: モジュール 'YourAssembly.dll' にはアスペクトやその他の変換が含まれていません。ビルド時のパフォーマンスを改善するには、プロジェクトでコンパイル シンボル (別名定数) 'SkipPostSharp' を設定するか、MSBuild プロパティ 'SkipPostSharp=True' を設定して、このモジュールの PostSharp を無効にすることを検討してください。: メッセージ : PostSharp 完了 -- 0 エラー、1 警告、1637 ミリ秒で提供

于 2011-12-09T21:26:34.163 に答える
0

Reflector を使用して結果のアセンブリを確認すると役立つ場合があります。PostSharp は単純な .NET アセンブリを生成します。魔法はありません。

于 2009-07-24T18:51:55.067 に答える