2

我想将我的解决方案应用VerboseTraceAspect到我的解决方案中,并将属性应用到任何地方,除了

  1. 获取器和设置器
  2. 任何类型的TestProject.Logging.*TestProject.Tracing.*

我正在使用以下示例,但它似乎不起作用。我做错了吗?如果是这样,应该怎么做?

多谢了。

[assembly: VerboseTraceAspect(AspectPriority = 0, AttributeExclude = true, AttributeTargetTypes = "TestProject.Logging.*|TestProject.Tracing.*")]

[assembly: VerboseTraceAspect(AspectPriority = 1, AttributeExclude = true, AttributeTargetMembers = "regex:get_.*|set_.*")]

[assembly: VerboseTraceAspect(AspectPriority = 2, AttributeTargetTypes = "TestProject.*", 
    AttributeTargetTypeAttributes = MulticastAttributes.Public, 
    AttributeTargetMemberAttributes = MulticastAttributes.Public, 
    AttributeTargetElements = MulticastTargets.Method)] 
4

1 回答 1

2

您需要更正从TestProject.Logging.*和中删除跟踪属性的第一行中的目标类型表达式TestProject.Tracing.*。如果你想指定几个用管道分隔的选项,那么你应该使用正则表达式语法。

您还需要使用AttributePriority而不是AspectPriority属性。属性多播在AspectPriority有任何效果之前执行。稍后将使用它来确定方面将执行的顺序。

“排除”属性必须具有较高的优先级值(较高的值在较低的值之后处理)。

[assembly: VerboseTraceAspect(
    AttributePriority = 1,
    AttributeExclude = true,
    AttributeTargetTypes = @"regex:TestProject\.Logging\..+|TestProject\.Tracing\..+")]

[assembly: VerboseTraceAspect(
    AttributePriority = 2,
    AttributeExclude = true,
    AttributeTargetMembers = "regex:get_.*|set_.*")]

[assembly: VerboseTraceAspect(
    AttributePriority = 0,
    AttributeTargetTypes = "TestProject.*",
    AttributeTargetTypeAttributes = MulticastAttributes.Public,
    AttributeTargetMemberAttributes = MulticastAttributes.Public,
    AttributeTargetElements = MulticastTargets.Method)] 
于 2013-10-21T09:54:33.223 回答