c#获取枚举

在实际开发项目中,我们定义了一个枚举,往往我们需要在下拉框或其它地方展示枚举。为了加深印象,也为了帮到有需要的人,我写了一个DEMO。

第一步,我们定义一个枚举:

    /// <summary>
    /// 测试枚举
    /// </summary>
    public enum EnumStatus
    {
        [Description("状态1")]
        A = 1,
        [Description("状态2")]
        B = 2,
        [Description("状态3")]
        C = 3
    }

第二步,为了方便查看我们获取的枚举,我们定义一个枚举模型:

    /// <summary>
    /// 定义枚举模型
    /// </summary>
    public class EnumModel
    {
        /// <summary>
        /// 枚举名称(类似本实例的A、B、C)
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 枚举值(类似本实例的1、2、3)
        /// </summary>
        public int Value { get; set; }
        /// <summary>
        /// 枚举描述
        /// </summary>
        public string Description { get; set; }
    }

第三步,编写获取枚举的代码:

        /// <summary>
        /// 获取枚举
        /// </summary>
        /// <param name="type">枚举类型</param>
        /// <returns></returns>
        static List<EnumModel> Get(Type type)
        {
            List<EnumModel> list = new List<EnumModel>();
            //获取枚举的所有字段
            var enumFields = type.GetFields();
            //遍历枚举的每个字段,读取每个枚举字段的属性值
            foreach (var field in enumFields)
            {
                EnumModel model = new EnumModel();
                var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute), false) as DescriptionAttribute;
                if (attribute != null)
                {
                    model.Description = attribute.Description;//枚举描述
                    model.Name = field.Name;//枚举名称
                    model.Value = (int)Enum.Parse(type, field.Name);//枚举值
                    list.Add(model);
                }
            }
            return list;
        }

最后一步,使用第三步定义的函数:

  static void Main(string[] args)
        {
            //获取枚举类型
            var enumType = typeof(EnumStatus);
            //获取枚举的属性
            var list = Get(enumType);
            //打印获取到的枚举属性值
            list.ForEach(item =>
            {
                Console.WriteLine(string.Format("Description:{0},Name:{1},Value:{2}", item.Description, item.Name, item.Value));//打印枚举属性
            });
            Console.ReadLine();
        }

到此,获取枚举就完成了。。

原文地址:https://www.cnblogs.com/fjzhang/p/6109558.html