C# 获取枚举的特性描述

1 枚举

public enum EnumOperType
{
    [Description("新增")]
    Add = 1,
    [Description("修改")]
    Edit,
    [Description("删除")]
    Del
}

2 获取某个描述

 public string GetEnumDescription(Enum enumValue)
 {
     string value = enumValue.ToString();
     FieldInfo field = enumValue.GetType().GetField(value);
     //获取描述属性
     object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); 
     if (objs == null || objs.Length == 0)  //当描述属性没有时,直接返回名称
         return value;
     DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
     return descriptionAttribute.Description;
 }

3 获取所有描述

List<OpType> list = new List<OpType>();
foreach (var e in Enum.GetValues(typeof(EnumOperType)))
{
    // 转换成Description后添加至List
    object objArr = e.GetType().GetField(e.ToString())
        .GetCustomAttributes(typeof(DescriptionAttribute), true)[0];
    var name = (objArr as DescriptionAttribute).Description;
    OpType opType = new OpType();
    opType.Key = (int)(EnumOperType)e;
    opType.Text = name;
    list.Add(opType);
}
posted @ 2021-09-03 14:46  一纸年华  阅读(568)  评论(0编辑  收藏  举报