2015-05-29 3 views
5

Я использую PostSharp Express в VS2013 для создания аспектов валидации, которые я могу применить к своим свойствам. Я следовал this PostSharp guide on location interception. Все они работают хорошо, но я получаю сотни предупреждений о том:Предупреждение PostSharp Conflicting Aspects

конфликтующих сторон на «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 требует Professional edition. Но тип AspectTypeDependency должен быть включен даже в Express Edition - тогда следует использовать нелицензированную ошибку времени сборки.

Вы можете использовать AspectPriority:

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

В качестве альтернативы вы можете назначить приоритет в аспекте конструктора. Он гораздо менее гибкий, чем оформление аспект, но по крайней мере он устраняет предупреждение.

+0

Благодарим вас за добавление AspectPriority для каждой проверки! – Ivan

Смежные вопросы