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 的工作方式。它只是将属性视为数据,而不是可执行代码。如果不对编译后的代码运行 PostSharp,您不会得到任何特别的东西。

于 2009-07-22T13:23:01.687 回答
3

您不需要执行 PostSharp 命令行实用程序,但需要正确安装。

最简单的方法是使用安装程序安装 PostSharp。

否则,您应该使用文档中所述的文本编辑器来编辑项目文件。

于 2009-07-22T14:29:39.243 回答