zoukankan      html  css  js  c++  java
  • 根据枚举获取枚举的Description特性值

    首先定义一个枚举:两个值:已确认、未确认。

    public enum ConfirmStatusEnum
        {
            [Description("未确认")]
            unconfirmed = 1,
            [Description("已确认")]
            confirmed = 2
        }
    View Code

    转换枚举的方法:

    private void InitConfirmStatus()
            {
                int values = 0;
                object[] atts = null;
                ConfirmStatusEntity statusEntity = null;
                DescriptionAttribute description = null;
                List<ConfirmStatusEntity> status = new List<ConfirmStatusEntity>();
    
                Type type = typeof(ConfirmStatusEnum);//取到枚举的Type
                var fields = type.GetFields();//获取枚举中所有字段
                foreach (var item in fields)
                {
                    if (item.FieldType != type)//如果类型不是枚举的则跳过
                    {
                        continue;
                    }
                    statusEntity = new ConfirmStatusEntity();//初始化实体
                    values = (int)item.GetValue(item.Name);//根据名称获取,枚举项的值
                    statusEntity.ID = values;
                    atts = item.GetCustomAttributes(typeof(DescriptionAttribute), false);
                    if (atts != null && atts.Length != 0)
                    {
                        description = (DescriptionAttribute)atts[0];//获取特性的描述信息;  description就是特性中的描述信息
                        //给实体复制
                        statusEntity.StatusName = description.Description;
                        status.Add(statusEntity);
                    }
                }
    
                //这个地方是我实际情况的处理,供参考
                ConfirmStatus = status;
                SelectConfirmStatus = status.FirstOrDefault();
            }
    View Code

    要转成的实体(根据实际情况,此操作可选):

     1 public class ConfirmStatusEntity
     2     {
     3         /// <summary>
     4         /// 此项对应枚举的int值,即 0,1  ....
     5         /// </summary>
     6         public int ID { get; set; }
     7 
     8         /// <summary>
     9         /// 此项对应枚举中特性的具体描述信息
    10         /// </summary>
    11         public string StatusName { get; set; }
    12     }
    View Code

    里面有些是我实际情况使用的实体,供参考。

  • 相关阅读:
    ngxin常用配置--作为web服务端
    百度学习笔记---查询数据库
    python开发
    C 语言学习——递归
    C 语言学习——强制类型转换
    C 语言学习——头文件
    C 语言学习——printf()输出格式
    一个简单的python web应用部署 nginx + uwsgi
    C 语言学习——字符串
    C 语言学习——指针
  • 原文地址:https://www.cnblogs.com/xiesong/p/7130711.html
Copyright © 2011-2022 走看看