我刚刚开始使用 Postsharp 作为在项目上进行日志记录等的一种方式,并且遇到了一个我尚未解决的问题。
在我的项目中,我创建了我的 LogAttribute,它正确地注销了我正在尝试执行的信息,例如参数输入和输出方法。唯一的问题是它也对所有构造函数都这样做,我不想被记录下来。
有没有办法排除构造函数被注销?
我的 GlobalAspects.cs 看起来类似于:
using PostSharp.Patterns.Diagnostics;
using PostSharp.Extensibility;
[assembly: TraceAttribute(AttributeTargetTypes = "myNamespace.toLog.*", AttributeTargetTypeAttributes = MulticastAttributes.Public, AttributeTargetMemberAttributes = MulticastAttributes.Public)]
我的属性中的 OnEntry、OnSuccess 和 On Exception 方法都是以下方面的变体:
StringBuilder output = new StringBuilder();
output.Append("Entering: ");
output.Append(this.methodName);
for (int i = 0; i < args.Arguments.Count; i++)
{
output.Append(" Argument: " + i + " - ");
output.Append(args.Arguments.GetArgument(i) ?? "null");
}
m_logger.Trace(output);