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(); }
标题目录