gpt4 book ai didi

c# - 如何反射(reflect)应用于枚举类型本身的自定义属性

转载 作者:行者123 更新时间:2023-12-02 15:33:16 26 4
gpt4 key购买 nike

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

类似这样的事情

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

我熟悉从枚举值反射(reflect) DescriptionAttribute 的更“常规”方法。我经常做这样的事情,没问题。如以下类型案例。

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 返回一个对象 数组。我们使用 foreach 循环的功能来转换为我们知道数组元素包含的类型,因为这就是我们所要求的:MyCustAttribute

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

关于c# - 如何反射(reflect)应用于枚举类型本身的自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com