2015-05-29 76 views
5

我在VS2013中使用PostSharp Express来创建可应用于我的属性的验证方面。我跟着​​。他们都工作得很好,但我得到数百警告,指出:PostSharp冲突方面警告

冲突方面的“MyNamespace.get_MyProperty”:转变 “.MyValidation1Attribute:通过咨询OnGetValue截获, OnSetValue”和“MyNamespace.Validation2Attribute:通过截获 建议OnGetValue,OnSetValue“不可交换,但它们不是 强烈排序。他们的执行顺序是不确定的。

我认为这是我在同一个属性上放置多个验证方面的结果。首先,我试着用逗号分隔属性,我知道这些属性应该命令它们:[Validation1,Validation2]但警告仍然存在。

由于我的方面是可以交换的(这不要紧,他们都执行该命令),the PostSharp docs advise他们使用AspectTypeDependency如下标记为这样:

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

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

回答

5

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

您可以使用AspectPriority:

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

或者,你可以在构造方面分配的优先级。它比方面排序灵活得多,但至少可以解决警告。

+0

谢谢,为每个验证工作添加AspectPriority! – Ivan