Enum添加说明并将说明和int值放在集合中并选定当前项

实现: 

 public static class EnumExtension
    {
        /// <summary>
        /// 获取枚举的描述,需要DescriptionAttribute属性
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public static string GetDescription(this Enum e)
        {
            //获取枚举的Type类型对象
            var type = e.GetType();
            //获取枚举的所有字段
            var fields = type.GetFields();

            //遍历所有枚举的所有字段
            foreach (var field in fields)
            {
                if (field.Name != e.ToString())
                {
                    continue;
                }
                //第二个参数true表示查找EnumDisplayNameAttribute的继承链

                if (field.IsDefined(typeof(DescriptionAttribute), true))
                {
                    var attr = field.GetCustomAttribute(typeof(DescriptionAttribute), false) as DescriptionAttribute;
                    if (attr != null)
                    {
                        return attr.Description;
                    }
                }
            }

            //如果没有找到自定义属性,直接返回属性项的名称
            return e.ToString();
        }

        /// <summary>
        /// 根据枚举获取下拉框列表
        /// </summary>
        /// <param name="en"></param>
        /// <returns></returns>
        public static List<KeyValue> GetSelectList(this Enum en)
        {
            var list = new List<KeyValue>();
            foreach (var e in Enum.GetValues(en.GetType()))
            {
                list.Add(new KeyValue() { Value = GetDescription(e as Enum), Key = ((int)e).ToString(), IsSelected = e.ToString() == en.ToString() });
            }
            return list;
        }
        
    }
    public class KeyValue {
        public string Key { get; set; }
        public string Value { get; set; }
        public bool IsSelected { get; set; }
    }

调用:

 class Program
    {
        static void Main(string[] args)
        {
            var list = OrderState.NoPay.GetSelectList();
            foreach (var item in list)
            {
                string str = string.Format("Key:{0},Value:{1},Selected:{2}", item.Key, item.Value, item.IsSelected);
                Console.WriteLine(str);
            }
            Console.ReadKey();
        }
    }
    public enum OrderState
    {
        [Description("未付款")]
        NoPay = 0,
        [Description("支付成功")]
        PaySuccess = 1,
        [Description("支付失败")]
        PayError = 2,
        [Description("已退款")]
        PayReturn = 3
    }

结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值