C#中枚举类型用key值获取value值
时间: 2024-02-17 20:05:13 浏览: 187
在 C# 中,可以通过 Enum 类型的 GetValues 方法获取枚举类型的所有值,然后通过 Enum 类型的 GetName 方法获取枚举值的名称。然后,使用反射获取枚举类型的 FieldInfo 对象,再使用 FieldInfo 对象的 GetValue 方法获取枚举值的实际值。
以下是一个示例代码:
```
using System;
using System.Reflection;
enum Fruit
{
Apple,
Banana,
Orange
}
class Program
{
static void Main(string[] args)
{
Fruit fruit = Fruit.Apple;
string fruitName = fruit.ToString(); // 获取枚举值的名称
FieldInfo fieldInfo = typeof(Fruit).GetField(fruitName); // 获取枚举值的 FieldInfo 对象
object[] attrs = fieldInfo.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false); // 获取枚举值的 DescriptionAttribute 属性
string fruitDescription = (attrs.Length > 0 ? ((System.ComponentModel.DescriptionAttribute)attrs[0]).Description : fruitName); // 获取枚举值的描述
Console.WriteLine(fruitDescription); // 输出“Apple”
}
}
```
在这个示例中,我们首先定义了一个枚举类型 Fruit,其中包含三个枚举值:Apple、Banana 和 Orange。然后,我们定义了一个 fruit 变量,将其值设置为 Fruit.Apple。接下来,我们使用 fruit.ToString() 方法获取 fruit 变量的名称,并使用 typeof(Fruit).GetField(fruitName) 方法获取 fruit 变量的 FieldInfo 对象。然后,我们使用 FieldInfo 对象的 GetCustomAttributes 方法获取 fruit 变量的 DescriptionAttribute 属性,如果存在该属性,则获取其值,否则返回 fruit 变量的名称。最后,我们输出 fruit 变量的描述。
阅读全文