gpt4 book ai didi

c# - PostSharp 冲突方面警告

转载 作者:太空狗 更新时间:2023-10-29 23:06:43 26 4
gpt4 key购买 nike

我在 VS2013 中使用 PostSharp Express 创建可应用于我的属性的验证方面。我关注了this PostSharp guide on location interception .它们都运行良好,但我收到了数百条警告:

Conflicting aspects on "MyNamespace.get_MyProperty": transformations ".MyValidation1Attribute: Intercepted by advice OnGetValue, OnSetValue" and "MyNamespace.Validation2Attribute: Intercepted by advice OnGetValue, OnSetValue" are not commutative, but they are not strongly ordered. Their order of execution is undeterministic.

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

因为我的方面是可交换的(执行顺序无关紧要),the PostSharp docs advise使用 AspectTypeDependency 将它们标记为如下所示:

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

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

最佳答案

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

您可以使用 AspectPriority:

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

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

关于c# - PostSharp 冲突方面警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com