Postsharp: how does it work?

人盡茶涼 提交于 2019-12-30 07:05:08

问题


Following the advice got on another question of mine, I converted the code there quoted to be used with PostSharp:

Attribute:

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

Still, I cannot get any result ("Works!" on the console). A breakpoint within the PostSharp attribute reveals that it is never entered.

Any Help? Thanks in advance.


回答1:


PostSharp processes the compiled IL binary and adds action you want to the method body decorated with the attribute. The attribute won't do anything by itself. This is how CLR tends to work. It just treats attributes as data, not executable code. Without running PostSharp on the compiled code, you don't get anything special.




回答2:


You do not need to execute the PostSharp command-line utility, but you need to install properly.

The easiest way is to install PostSharp using the installer.

Otherwise, you should edit your project file using a text editor as described in documentation.



来源:https://stackoverflow.com/questions/1165191/postsharp-how-does-it-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!