c# 获得枚举类型数据项(不包括空项) text为枚举描述 value为枚举值 name为枚举名称

1.获得枚举类型数据项(不包括空项)  text为枚举描述 value为枚举值 name为枚举名称

        /// <summary> 
        /// 获得枚举类型数据项(不包括空项)  text为枚举描述 value为枚举值 name为枚举名称
        /// </summary> 
        /// <param name="enumType">枚举类型</param> 
        /// <returns></returns> 
        public static ArrayList GetItems(this Type enumType)
        {
            if (!enumType.IsEnum)
                throw new InvalidOperationException();

            ArrayList list = new ArrayList();

            // 获取Description特性 
            Type typeDescription = typeof(DescriptionAttribute);
            // 获取枚举字段
            FieldInfo[] fields = enumType.GetFields();
            foreach (FieldInfo field in fields)
            {
                if (!field.FieldType.IsEnum)
                    continue;
                // 获取枚举值
                int value = (int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null);
                //获取枚举名称
                string name = enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null).ToString();
                string text = string.Empty;
                object[] array = field.GetCustomAttributes(typeDescription, false);

                if (array.Length > 0) text = ((DescriptionAttribute)array[0]).Description;
                else text = field.Name; //没有描述,直接取值

                //添加到列表
                //list.Add(new { Value = value, Text = text, Name = name });
                list.Add(new DictionaryEntry(value, text));
            }
            return list;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值