.Net Core获取名称,值,描述集合

发布时间 2023-09-14 09:35:50作者: 喜东东三三

 

//创建枚举类
public enum Role
{
/// <summary>
/// 超级管理员
/// </summary>
[Description("超级管理员")]
Admin = 0,
/// <summary>
/// 租借用户
/// </summary>
[Description("租借用户")]
Lease = 1,
/// <summary>
/// 普通购买用户
/// </summary>
[Description("普通购买用户")]
Money = 2,
}
//创建返回类型集合
public class EnumLists
{
/// <summary>
/// 名称
/// </summary>
public string name { get; set; }

/// <summary>
////// </summary>
public int value { get; set; }

/// <summary>
/// 描述
/// </summary>
public string Des { get; set; }
}
//创建一个泛型的方法,用来规定只能接受枚举类型
public static List<EnumLists> Gets<T>() where T : Enum
{
var type = typeof(T);
var list = new List<EnumLists>();
var fields = type.GetFields(BindingFlags.Static | BindingFlags.Public) ?? new FieldInfo[] { };
foreach (var field in fields)
{
var info = new EnumLists();
//取到:Admin
info.name = field.Name;
//取到:0
info.value = (int)field.GetValue(null);

var atts = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (atts != null && atts.Length > 0)
{
//取到:超级管理员
var att = ((DescriptionAttribute[])atts)[0];
info.Des = att.Description;
}
list.Add(info);
}
return list;
}

 

//调用
Gets<Role>()

最终就可以获取到一个包含枚举值,名称,描述的枚举集合.[{"name":"Admin","value":0,"Des":"超级管理员"},{......},{......}]