尖锐冲突方面警告



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

MyNamespace的冲突方面。get_MyProperty":转换".MyValidation1Attribute:被advice OnGetValue拦截OnSetValue"one_answers"MyNamespace"。Validation2Attribute:被截获建议OnGetValue, OnSetValue"是不可交换的,但他们不是强烈要求。它们的执行顺序是不确定的。

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

因为我的方面是可交换的(不管它们执行的顺序是什么),PostSharp文档建议使用AspectTypeDependency来标记它们,如下所示:

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

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

AspectTypeDependency需要专业版。但是AspectTypeDependency类型即使在Express版本中也应该包括在内——使用非授权特性构建时应该有错误。

你可以使用AspectPriority:

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

或者您可以在方面构造函数中分配优先级。它比方面排序灵活得多,但至少解决了警告问题。

最新更新