Postsharp представляет атрибуты с аргументами собственности

Я пытаюсь добиться введения атрибутов, как здесь, но мои атрибуты имеют аргументы свойства, такие как: [Foo(Bar = "Baz")]

Как правильно передать аргументы? Я не копирую атрибуты из чего-то другого, поэтому не думаю, что смогу использовать CustomAttributeData?

1 ответ

Решение

Вы можете установить свойства ваших пользовательских атрибутов, используя ObjectConstruction.NamedArguments толковый словарь.

Например:

public IEnumerable<AspectInstance> ProvideAspects(object targetElement)
{
    Type targetType = (Type) targetElement;

    var objectConstruction =
        new ObjectConstruction(typeof (MyCustomAttribute).GetConstructor(Type.EmptyTypes));
    objectConstruction.NamedArguments["Bar"] = "Baz";

    var introduceAttributeAspect = new CustomAttributeIntroductionAspect(objectConstruction);

    yield return new AspectInstance(targetType, introduceAttributeAspect);
}
Другие вопросы по тегам