Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 波斯夏普:它是如何工作的?_C#_Reflection_Attributes_Postsharp - Fatal编程技术网

C# 波斯夏普:它是如何工作的?

C# 波斯夏普:它是如何工作的?,c#,reflection,attributes,postsharp,C#,Reflection,Attributes,Postsharp,根据得到的建议,我将引用的代码转换为与PostSharp一起使用: 属性: [Serializable] public sealed class InitAttribute : OnMethodBoundaryAspect { public override void OnEntry(MethodExecutionEventArgs eventArgs) { Console.Write("Works!"); } } static class Logge

根据得到的建议,我将引用的代码转换为与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二进制文件,并将您想要的操作添加到带有属性装饰的方法体中。属性本身不会做任何事情。这就是CLR的工作原理。它只是将属性视为数据,而不是可执行代码。如果没有,您将不会得到任何特殊信息。

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

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


否则,您应该使用文本编辑器编辑项目文件。

我们可以获得使用属性的示例吗?还有,你检查过编译警告了吗?嗨,克里斯。没有警告。另外,我认为代码示例已经存在了。在CodeProject的PostSharp教程中,这段代码似乎非常符合我的要求,只是trace.write而不是console.write。无论如何,它对我不起作用,trace.write也不起作用。编译后是否在二进制文件上运行PostSharp?