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

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

转载于:https://www.cnblogs.com/xiesong/p/7130711.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值