zoukankan      html  css  js  c++  java
  • 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();
            }

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

  • 相关阅读:
    PHP无法使用file_get_contents或者curl_init()函数解决办法
    EXT 删除 监听
    PHP调试工具Xdebug安装配置教程
    Linux常用命令大全
    js中setInterval与setTimeout用法
    基于Web过程模拟的动态Web信息获取
    HNU2[J题]Modified LCS 扩展GCD
    SQL Server 2005定时备份维护操作步骤定时备份维护操作步骤定时备份维护操作步骤定时备份维护操作步骤
    object_id (N'...')是什么意思?
    使用TSQL来创建作业(这个比较好)
  • 原文地址:https://www.cnblogs.com/fjzhang/p/6109558.html
Copyright © 2011-2022 走看看