0
点赞
收藏
分享

微信扫一扫

Enum转换为list、获取Enum类型的Description、


一、创建EnumHelper类

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;

namespace Common.EnumHepler
{
    public static class EnumHelper
    {
        private static string GetEnumDescription<TEnum>(this TEnum eunmObj)
        {
            //获取枚举对象的枚举类型  
            var type = eunmObj.GetType();
            //通过反射获取该枚举类型的所有属性  
            var fieldInfos = type.GetFields();

            foreach (var field in fieldInfos)
            {
                //不是参数obj,就直接跳过  
                if (field.Name != eunmObj.ToString())
                {
                    continue;
                }
                //取出参数obj的自定义属性  
                if (!field.IsDefined(typeof(DescriptionAttribute), true)) continue;
                var descriptionAttribute = field.GetCustomAttributes(typeof(DescriptionAttribute),
                    true)[0] as DescriptionAttribute;
                if (descriptionAttribute != null)
                    return descriptionAttribute.Description;
            }
            return eunmObj.ToString();
        }

        /// <summary>
        /// 枚举转Dictionary
        /// </summary>
        /// <typeparam name="TEnum"></typeparam>
        /// <returns></returns>
        public static IList<EnumResult> EnumToDictionary<TEnum>()
        {
            var enumType = typeof(TEnum);

            return (from object obj in Enum.GetValues(enumType)
                    select new EnumResult
                    {
                        Text = GetEnumDescription(obj),
                        Value = (int)obj
                    }).ToList();
        }

        /// <summary>
        /// 获取枚举描述
        /// </summary>
        /// <param name="eunmObj"></param>
        /// <returns></returns>
        public static string GetDescription(this Enum eunmObj)
        {
            return GetEnumDescription(eunmObj);
        }
    }

    public class EnumResult
    {
        public string Text { get; set; }
        public int Value { get; set; }
    }
}

二、调用

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using Common.EnumHepler;

namespace API.Controllers
{
    
    public class EnumController 
    {
       
        public void GetDescription()
        {
            string manDesc = EnumHelper.GetDescription(Sex.man);
            //manDesc = "男"
            string womamDesc = EnumHelper.GetDescription(Sex.womam);
            //womamDesc = "女"
        }
        
        public void EnumToDictionary()
        {
            IList<EnumResult> obj = EnumHelper.EnumToDictionary<Sex>();
        }
    }


    public enum Sex
    {
        [Description("男")]
        man = 1,
        [Description("女")]
        womam
    }
}

Enum转换为list、获取Enum类型的Description、_枚举类型

举报

相关推荐

0 条评论