如何反映应用于枚举类型本身的自定义属性

本文关键字:自定义属性 类型 何反映 应用于 枚举 | 更新日期: 2023-09-27 17:57:06

我有一个自定义属性,我想将其应用于枚举类型本身,但是我无法确定正确的路径来获取正确的 *Info 以公开该属性。

像这样的东西

[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)]
public class MyCustAttribute : Attribute {}
[MyCust()]
[MyCust()]
[MyCust()]/*...and so on...*/
public enum MyEnumType{}

我熟悉从枚举值中反映描述属性的更"习惯"的方法。我一直在做这种事情,没问题。如以下类型情况。

public enum MyEnumType {
    [Description("My First Value")]
    First,
    [Description("My Second Value")]
    Second,
}

我确信这是显而易见的,但我看不出这是否可能。

如何反映应用于枚举类型本身的自定义属性

您可以

像这样循环访问enum类型的自定义属性:

static void Main(string[] args)
{
    var attributes = typeof(MyEnumType).GetCustomAttributes(typeof(MyCustAttribute), false);
    foreach (MyCustAttribute attribute in attributes)
        Console.WriteLine("attribute: {0}", attribute.GetType().Name);
    Console.ReadKey();
}

在此示例中,GetCustomAttributes 返回一个 object 数组。 我们使用 foreach 循环的能力来转换为我们知道数组元素包含的类型,因为这就是我们要求的:MyCustAttribute .

由于您的自定义属性中还没有任何有趣的内容,因此我们只是选择打印出类型的名称。 你显然会用你类型的真实实例做一些更令人兴奋的事情。