Postsharp介绍具有属性参数的属性

时间:2013-10-20 13:04:06

标签: postsharp

我正在尝试实现here之类的属性介绍,但我的属性包含属性参数,例如:[Foo(Bar = "Baz")]

如何正确传递参数?我不是从其他东西复制属性,所以我认为我不能使用CustomAttributeData?

1 个答案:

答案 0 :(得分: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);
}