我想创建一个属性,我想将其应用于一个类。在这个类中,如果调用了一个方法,在postsharp的OnEntry
and方法中,我想像这样记录确切的方法名称:OnExit
“GetPartners 开始……”
或者
“GetPartners 完成...”
或者如果发生异常:
“GetPartners 方法发生异常”
有什么解决办法吗?
有几个选项可用于启用方法跟踪。
首先,您可以使用现有的 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;
}