2013-03-28 1 views
1

Я только что начал использовать Postsharp как способ ведения журнала и т. Д. В проекте и столкнулся с проблемой, которую мне еще предстоит решить.Как исключить использование конструкторов из-за широких аспектов пространства имен

В моем проекте я создал свой LogAttribute, который правильно выводит информацию, которую я пытаюсь сделать, например. Параметры входящих и исходящих методов. Единственная проблема заключается в том, что он также делает это и для всех конструкторов, которые я не хочу регистрировать.

Есть ли способ исключить из строя конструкторы?

Мой GlobalAspects.cs похож на:

using PostSharp.Patterns.Diagnostics; 
using PostSharp.Extensibility; 

[assembly: TraceAttribute(AttributeTargetTypes = "myNamespace.toLog.*", AttributeTargetTypeAttributes = MulticastAttributes.Public, AttributeTargetMemberAttributes = MulticastAttributes.Public)] 

Мой OnEntry, OnSuccess и О методах исключений в моем атрибуте все варианты на:

 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); 

ответ

5

Добавляя следующее в объявлении атрибута представляется, что проблема решена:

[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Instance)] 
[Serializable] 
public class TraceAttribute : OnMethodBoundaryAspect 
{ 
} 
Смежные вопросы