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);
}