『QQ:1353814576』

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();
    }