Использование AspectPriority

#c# #.net #postsharp #aop

#c# #.net #пострезкость #aop

Вопрос:

Я использую PostSharp 2.1.5.1 и сегодня получил предупреждение:

Зависимости аспектов (определены в «MyNamespace.Мой аспект.MyVerificationAttribute») будет отключен из начальной версии в будущих версиях. Вместо этого используйте свойство AspectPriority .

Мне кажется, что следующая строка вызывает это предупреждение:

 [AspectRoleDependency(AspectDependencyAction.Order, AspectDependencyPosition.After, StandardRoles.Tracing)]
  

Может ли кто-нибудь указать мне на правильный пример того, как использовать AspectPriority ? Являются ли следующие примеры актуальными?

Спасибо.

Ответ №1:

Правильное использование — AttributePriority . Более низкие значения имеют более высокий приоритет или аспекты, которые применяются в первую очередь.

 [Trace(AttributePriority = 2)]
[HandleError(AttributePriority = 1)]
public void MyMethod()
{

}
  

Приоритет аспекта некоторое время не действителен. AspectDependencyAction определяет «приоритет» между двумя аспектами. Это означает, что если Aspect1 зависит от Aspect2, то и AspectDependencyAction .Order = After затем Aspect1 будет применен после применения Aspect2. но это не то, что вы ищете (я думаю). Просто используйте AttributePriority вместо этого.

Комментарии:

1. Спасибо. Аналогичный ответ, который у меня также есть на форуме SharpCrafters

2. @DustinDavis — В одном из своих сообщений в блоге вы отмечаете, что «использование AttributePriority не считается лучшей практикой, потому что им быстро становится трудно управлять. В другой раз мы увидим, как решить эту проблему чистым и надежным способом «. Это функция зависимостей от аспектов из коммерческой версии или есть лучший способ?