在运行时确定自定义属性的值

时间:2019-11-13 14:06:48

标签: c# reflection attributes runtime

我有以下情况:

/* Attribute to be filled */
public class Flower
{
    public FlowerType Type { get; set; }

    public string Value { get; set; }
}

public enum FlowerType 
{
    Rose,
    Daisy,
    Tulip
}

[AttributeUsage(AttributeTargets.Class)]
public sealed class FlowerAttribute : Attribute
{
    public string FlowerValue { get; }

    public FlowerAttribute(string flowerValue)
    {
        FlowerValue = flowerValue;
    }
}

我想要实现的是一种根据运行时为类Flower提供属性的方法,这意味着如果将花朵实例化为Rose类型,则该属性位于FlowerFlowerValue设置为"Rose"。我能以某种方式实现吗?一如既往地感谢您!

1 个答案:

答案 0 :(得分:3)

  

我能以某种方式实现这一目标吗?

不。属性参数总是在编译时决定的-这就是为什么它们必须是编译时常量的原因。这些值被烘焙到IL中。

目前尚不清楚更大的目标是什么,但是任何 dynamic 都不太可能适合属性。