Postsharp: доступ к уже примененным аспектам из аспекта

Я создал небольшую иерархию аспектов. Пример:

public abstract class MyBaseAspectAttribute : Aspect, IAspectProvider
{
...
    public IEnumerable<AspectInstance> ProvideAspects( object targetElement )
    {
    }
...
}

Мне было интересно, есть ли какой-нибудь способ внутри ProvideAspect, чтобы выяснить, применяются ли и какие другие аспекты уже к targetElement, и получить ссылку на экземпляр Aspect.

Что-то вроде

PostShart.GetAspects(targetElement).OfType<MyBaseAspectAttribute>();

(мое намерение: проверить, добавлен ли определенный аспект, и если да, то изменить его)

PS: я решил свою проблему по-другому, но если бы это было возможно, я нашел бы более элегантное и эффективное решение, чем мое.

1 ответ

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

http://www.postsharp.net/blog/post/New-in-PostSharp-40-Aspect-Repository http://doc.postsharp.net/t_postsharp_aspects_iaspectrepositoryservice

Если вы хотите изменить экземпляр аспекта, вам нужно сохранить экземпляры в словаре, хранящемся в статическом поле. Словарь может быть заполнен из конструктора аспекта, поэтому он не только охватывает случай IAspectProvider, но также когда аспект применяется в качестве пользовательского атрибута.

Другие вопросы по тегам