Postsharp:它是如何工作的?

2023-12-02

遵循建议我的另一个问题,我将引用的代码转换为与 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);
    }
}

尽管如此,我仍无法得到任何结果(控制台上显示“有效!”)。 PostSharp 属性中的断点表明它从未被输入过。

有帮助吗?提前致谢。


PostSharp 处理编译后的 IL 二进制文件并将您想要的操作添加到方法中body用属性装饰。该属性本身不会执行任何操作。这就是 CLR 的工作方式。它只是将属性视为data,不是可执行代码。没有在编译后的代码上运行 PostSharp,你没有得到任何特别的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Postsharp:它是如何工作的? 的相关文章

随机推荐