4

私の別の質問に関するアドバイスに従って、そこに引用されているコードを PostSharp で使用できるように変換しました。

属性:

[Serializable]
public sealed class InitAttribute : OnMethodBoundaryAspect
{
    public override void OnEntry(MethodExecutionEventArgs eventArgs)
    {
        Console.Write("Works!");
    }
}


static class Logger
{
    public static string _severity;

    public static void Init(string severity)
    {
        _severity = severity;
    }

    [Init()]
    public static void p()
    {
        Console.WriteLine(_severity);
    }
}

それでも、結果が得られません (コンソールに "Works!" が表示されます)。PostSharp 属性内のブレークポイントは、入力されていないことを示しています。

ヘルプはありますか?前もって感謝します。

4

2 に答える 2

11

PostSharp は、コンパイルされた IL バイナリを処理し、属性で装飾されたメソッド本体に必要なアクションを追加します。属性自体は何もしません。これは、CLR が機能する傾向がある方法です。属性を実行可能コードではなくdataとして扱うだけです。コンパイルされたコードで PostSharp を実行しなければ、特別なことは何も得られません。

于 2009-07-22T13:23:01.687 に答える