将 PostSharp 方面应用于类中的所有方法以记录方法名称
本文关键字:有方法 记录 方法 方面 PostSharp 应用于 | 更新日期: 2023-09-27 18:32:29
我想创建一个属性,我想将其应用于类。在此类中,如果调用了一个方法,在 postsharp 的 OnEntry
和 OnExit
方法中,我想像这样记录确切的方法名称:
"获取合作伙伴开始..."
或
"获取合作伙伴完成..."
或者如果发生异常:
"获取合作伙伴方法中发生异常"
有什么解决方案吗?
有几个选项可用于启用方法跟踪。
首先,您可以使用现有的 PostSharp 诊断模式库,只需添加并配置该库中的 [Log]
属性:添加详细跟踪。
如果你想创建自己的属性,那么这里有一个示例:"PostSharp.Samples.CustomLogging"。
基本上你需要从类OnMethodBoundaryAspect
派生并覆盖方法OnEntry
、OnExit
、OnException
来编写你的消息。
为了获得更好的性能,您可以在编译时准备相应的消息,并在运行时在处理程序中重用它们,如示例中所示:
public override void CompileTimeInitialize(MethodBase method, AspectInfo aspectInfo)
{
string methodName = method.DeclaringType.FullName + "." + method.Name;
this.enteringMessage = "Entering " + methodName;
this.exitingMessage = "Exiting " + methodName;
}