将 PostSharp 方面应用于类中的所有方法以记录方法名称

本文关键字:有方法 记录 方法 方面 PostSharp 应用于 | 更新日期: 2023-09-27 18:32:29

我想创建一个属性,我想将其应用于类。在此类中,如果调用了一个方法,在 postsharp 的 OnEntryOnExit 方法中,我想像这样记录确切的方法名称:

"获取合作伙伴开始..."

"获取合作伙伴完成..."

或者如果发生异常:

"获取合作伙伴方法中发生异常"

有什么解决方案吗?

将 PostSharp 方面应用于类中的所有方法以记录方法名称

有几个选项可用于启用方法跟踪。

首先,您可以使用现有的 PostSharp 诊断模式库,只需添加并配置该库中的 [Log] 属性:添加详细跟踪。

如果你想创建自己的属性,那么这里有一个示例:"PostSharp.Samples.CustomLogging"。

基本上你需要从类OnMethodBoundaryAspect派生并覆盖方法OnEntryOnExitOnException来编写你的消息。

为了获得更好的性能,您可以在编译时准备相应的消息,并在运行时在处理程序中重用它们,如示例中所示:

public override void CompileTimeInitialize(MethodBase method, AspectInfo aspectInfo)
{
    string methodName = method.DeclaringType.FullName + "." + method.Name;
    this.enteringMessage = "Entering " + methodName;
    this.exitingMessage = "Exiting " + methodName;
}