PostSharp冲突方面警告

Iva*_*van 5 c# validation aop postsharp visual-studio

我在VS2013中使用PostSharp Express创建验证方面,我可以将其应用于我的属性.我按照这个PostSharp指南进行了位置拦截.他们都运作良好,但我收到数百条警告说:

"MyNamespace.get_MyProperty"上的冲突方面:转换".MyValidation1Attribute:由建议OnGetValue拦截,OnSetValue"和"MyNamespace.Validation2Attribute:由建议OnGetValue拦截,OnSetValue"不可交换,但它们没有强烈排序.他们的执行顺序是不确定的.

我认为这是我在同一属性上放置多个验证方面的结果.首先,我尝试用逗号分隔属性,我理解应该对它们进行排序:[Validation1,Validation2]但警告仍然存在.

由于我的方面是可交换的(它们执行的顺序无关紧要),PostSharp文档建议使用AspectTypeDependency将其标记为如下:

[AspectTypeDependency(AspectDependencyAction.Commute, typeof(ILocationValidationAspect))]
Run Code Online (Sandbox Code Playgroud)

但是,似乎PostSharp.Aspects.Dependencies名称空间不包含在Express许可证下.是否有任何可能的解决方案仅使用Express许可证解决这些警告?或者这是否意味着我不能在不购买专业版或终极版的情况下使用多个方面?如果我能以这种方式删除这些警告,我愿意尝试实现我自己的依赖控制器.

Jak*_*art 6

AspectTypeDependency需要专业版.但是即使在Express版本中也应该包含AspectTypeDependency类型 - 那么应该使用非许可的功能构建时错误.

您可以使用AspectPriority:

[Validation1(AspectPriority = 1), Validation2(AspectPriority = 2)]
Run Code Online (Sandbox Code Playgroud)

或者,您可以在方面构造函数中指定优先级.它比方面排序灵活性差,但至少它解决了警告.