zoukankan      html  css  js  c++  java
  • C# 枚举帮助类EnumHelper(获取描述、名称和数值)

    帮助类定义

        public class EnumHelper
        {
            #region 静态方法
            public static Dictionary<string, string> GetEnumDescription<T>()
            {
                Dictionary<string, string> dic = new Dictionary<string, string>();
    
                FieldInfo[] fields = typeof(T).GetFields();
    
                foreach (FieldInfo field in fields)
                {
    
                    if (field.FieldType.IsEnum)
                    {
    
                        object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
    
                        string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;
    
                        dic.Add(field.Name, description);
    
                    }
                }
    
                return dic;
            }
    
            /// <summary>        
            /// 获取对应的枚举描述        
            /// </summary>        
            public static List<KeyValuePair<string, string>> GetEnumDescriptionList<T>()
            {
                List<KeyValuePair<string, string>> result = new List<KeyValuePair<string, string>>();
    
                FieldInfo[] fields = typeof(T).GetFields();
    
                foreach (FieldInfo field in fields)
                {
                    if (field.FieldType.IsEnum)
                    {
    
                        object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
    
                        string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;
    
                        result.Add(new KeyValuePair<string, string>(field.Name, description));
    
                    }
    
                }
                return result;
            }
    
    
            /// <summary>
            /// 获取枚举的 值和描述
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <returns></returns>
            public static List<KeyValuePair<int, string>> GetEnumValueDescriptionList<T>()
            {
                List<KeyValuePair<int, string>> result = new List<KeyValuePair<int, string>>();
                FieldInfo[] fields = typeof(T).GetFields();
                foreach (FieldInfo field in fields)
                {
                    if (field.FieldType.IsEnum)
                    {
                        object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
                        string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;
                        result.Add(new KeyValuePair<int, string>(Convert.ToInt32(field.GetValue(null)), description));
                    }
                }
    
                return result;
            }
    
            public static string GetDescriptionByEnumName<T>(string name)
            {
                try
                {
                    Dictionary<string, string> dic = GetEnumDescription<T>();
                    string description = dic[name];
                    return description;
                }
                catch (Exception ex)
                {
                    return "";
                }
            }
            #endregion
        }
    

    控件绑定

        public enum GenderType
        {
            [Description("男")]
            Man = 1,
            [Description("女")]
            Woman = 2
        }
    
        private void frmMain_Load(object sender, EventArgs e)
        {
            comboBox1.DataSource = EnumHelper.GetEnumValueDescriptionList<GenderType>().Select(x => new
            {
                Key = x.Value,
                Value = x.Key
            }).ToList();
            comboBox1.DisplayMember = "Key";
            comboBox1.ValueMember = "Value";
        }
    
  • 相关阅读:
    深入了解JVM-方法区
    Mysql性能调优
    基督教 犹太  新教  东正教 天主教
    caffe的matlab接口一览表
    ubuntu下 编译Caffe的Matlab接口
    Linux入门学习教程:虚拟机体验之KVM篇
    利用proxychains在终端使用socks5代理
    process lasso 优化原理
    解决win7和ubuntu双系统ubuntu不能上网的问题
    调试minix内核
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/14806402.html
Copyright © 2011-2022 走看看