C# 波斯夏普:它是如何工作的?
根据得到的建议,我将引用的代码转换为与PostSharp一起使用: 属性: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
[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?