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

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

  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/xiesong/p/7130711.html
Copyright © 2011-2022 走看看