c# 枚举遍历取值以及获取描述信息
c# 枚举遍历取值以及获取描述信息
//添加命名空间
using System.ComponentModel;
/测试枚举 语言种类
public enum Language {
[Description("中文")]
Chinese = 0,
[Description("英文")]
English = 1,
[Description("日语")]
Japanese = 2,
[Description("德语")]
German = 3,
[Description("法语")]
French = 4, } `
//获取枚举值的描述信息
public static string getDesc(Language language)
{
string str = language.ToString();
System.Reflection.FieldInfo fieldInfo = language.GetType().GetField(str);
object\[\] objs = fieldInfo.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
if (objs is null || objs.Length == 0) return str;
System.ComponentModel.DescriptionAttribute da = (System.ComponentModel.DescriptionAttribute)objs.FirstOrDefault();
return da.Description;
}
//遍历枚举的每个子项的值以及获取子项的描述信息Description
static void Main(string[] args)
{
foreach (Language language in Enum.GetValues(typeof(Language)))
{
string desc = getDesc(language);
Console.WriteLine($"枚举名:{language} 枚举值:{(int)language} 描述:{desc}");
}
Console.ReadKey();
}