• 根据枚举获取枚举的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

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

  • 相关阅读:
    AtCoder Regular Contest 061
    Codeforces Round #370 (Div. 2)
    2016 ACM/ICPC Asia Regional Dalian Online
    HDU 5513 Efficient Tree
    Codeforces Round #104 (Div. 1)
    2016 Hunan Province Programming Contest
    2016 Multi-University Training Contest 7
    2016中国大学生程序设计竞赛
    聚会「AHOI 2008」
    游戏「AHOI / HNOI2018」
  • 原文地址:https://www.cnblogs.com/xiesong/p/7130711.html
Copyright © 2020-2023  润新知