3

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

“GetPartners 开始……”

或者

“GetPartners 完成...”

或者如果发生异常:

“GetPartners 方法发生异常”

有什么解决办法吗?

4

1 回答 1

7

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

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

如果您想创建自己的属性,则此处提供了一个示例:“PostSharp.Samples.CustomLogging”

基本上,您需要从类派生OnMethodBoundaryAspect并覆盖方法OnEntry,OnExitOnException编写您的消息。

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

public override void CompileTimeInitialize(MethodBase method, AspectInfo aspectInfo)
{
    string methodName = method.DeclaringType.FullName + "." + method.Name;
    this.enteringMessage = "Entering " + methodName;
    this.exitingMessage = "Exiting " + methodName;
}
于 2013-09-24T12:07:00.240 回答