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

Con*_*are 3 c# aop postsharp

我想创建一个我想要应用于类的属性.在这个类中,如果调用了一个方法,在postharp 的OnEntryand OnExitmethodof中,我想记录确切的方法名,如下所示:

"GetPartners开始......"

要么

"GetPartners完成......"

或者如果发生异常:

"在GetPartners方法中出现异常"

这有什么解决方案吗?

Ale*_*exD 7

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

首先,您可以使用现有的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;
}
Run Code Online (Sandbox Code Playgroud)