PostSharp 冲突 Aspect 警告

5
我正在使用PostSharp Express在VS2013中创建验证方面,可以应用于我的属性。我遵循了此PostSharp指南的位置拦截。它们都工作得很好,但是我收到了数百个警告,指出:

“MyNamespace.get_MyProperty”上的冲突方面:“.MyValidation1Attribute:通过建议OnGetValue, OnSetValue拦截”和“MyNamespace.Validation2Attribute:通过建议OnGetValue, OnSetValue拦截”不可交换,但它们没有强有序。它们的执行顺序是不确定的。

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

由于我的方面具有可交换性(它们的执行顺序无关紧要),PostSharp文档建议使用AspectTypeDependency来标记它们,如下所示:

[AspectTypeDependency(AspectDependencyAction.Commute, typeof(ILocationValidationAspect))]

然而,似乎在Express许可证下不包括PostSharp.Aspects.Dependencies命名空间。是否有可能仅使用Express许可证解决这些警告?或者这意味着我不能使用多个方面而不购买专业版或终极版?如果可以通过实现自己的依赖控制器来消除这些警告,我愿意尝试。
1个回答

7

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

您可以使用AspectPriority:

[Validation1(AspectPriority = 1), Validation2(AspectPriority = 2)]

或者您也可以在方面构造函数中指定优先级。与方面排序相比,它的灵活性要小得多,但至少可以解决警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接