#c# #.net #postsharp #aop
#c# #.net #пострезкость #aop
Вопрос:
Я использую PostSharp 2.1.5.1 и сегодня получил предупреждение:
Зависимости аспектов (определены в «MyNamespace.Мой аспект.MyVerificationAttribute») будет отключен из начальной версии в будущих версиях. Вместо этого используйте свойство AspectPriority .
Мне кажется, что следующая строка вызывает это предупреждение:
[AspectRoleDependency(AspectDependencyAction.Order, AspectDependencyPosition.After, StandardRoles.Tracing)]
Может ли кто-нибудь указать мне на правильный пример того, как использовать AspectPriority
? Являются ли следующие примеры актуальными?
-
http://www.sharpcrafters.com/blog/post/introducing-postsharp-2-0-3-aspect-dependencies.aspx (раздел «Приоритет старого доброго аспекта»)
-
http://www.sharpcrafters.com/blog/post/Day-3-Applying-Aspects-with-Multicasting-Part-2.aspx (раздел «Приоритет аспекта»)
Спасибо.
Ответ №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 не считается лучшей практикой, потому что им быстро становится трудно управлять. В другой раз мы увидим, как решить эту проблему чистым и надежным способом «. Это функция зависимостей от аспектов из коммерческой версии или есть лучший способ?