.net工具类 获取枚举类型的描述
2021-03-10 12:28
标签:The loading field 收货 getc each fun img new 在做毕设时,由于前后端都需要开发,当时用EasyUI设计。但是在做下拉框时比较麻烦,所以就封装了一个枚举扩展类。 下面开始: /// //遍历所有枚举的所有字段 if (field.IsDefined(typeof(DescriptionAttribute), true)) //如果没有找到自定义属性,直接返回属性项的名称 /// foreach (var e in Enum.GetValues(en.GetType())) return list; /// foreach (var e in Enum.GetValues(type)) return list; 注: ComboboxItemDto 类来自Abp源码,主要用于提供前端下拉框数据源 主要代码: // // 摘要: // This DTO can be used as a simple item for a combobox/list. public class ComboboxItemDto { // // 摘要: // Creates a new Abp.Application.Services.Dto.ComboboxItemDto. public ComboboxItemDto(); // // 摘要: // Creates a new Abp.Application.Services.Dto.ComboboxItemDto. // // 参数: // value: // Value of the item // // displayText: // Display text of the item public ComboboxItemDto(string value, string displayText); // // 摘要: // Value of the item. public string Value { get; set; } // // 摘要: // Display text of the item. public string DisplayText { get; set; } // // 摘要: // Is selected? public bool IsSelected { get; set; } } 为了能更清楚得理解,下面举例说明: /// /// 商品订单状态 /// public enum RPurState { /// /// 待付款 /// [Description("待付款")] PendingPay, /// /// 待发货 /// [Description("待发货")] PendingShip, /// /// 待收货 /// [Description("待收货")] PendingReceipt, /// /// 待评价 /// [Description("待评价")] PendingEvaluation, /// /// 已评价 /// [Description("已评价")] Evaluated, /// /// 已退款 /// [Description("已退款")] Refunded = 100 } 这是一个订单DTO,一般会存在订单状态字段,就像这样。 /// /// 订单状态(这个字段会通过AutoMapper自动映射) /// public RPurState State { get; set; } /// /// 订单状态描述 /// public string StateDesc => State.GetDescription(); 好了,这样前端就能拿到订单状态描述信息了,是不是很方便。 .net工具类 获取枚举类型的描述 标签:The loading field 收货 getc each fun img new 原文地址:https://www.cnblogs.com/KingPan/p/12851669.html
/// 枚举扩展类
///
public static class EnumExtension
{
///
/// 获取枚举的描述,需要DescriptionAttribute属性
///
///
///
public static string GetDescription(this Enum e)
{
//获取枚举的Type类型对象
var type = e.GetType();
//获取枚举的所有字段
var fields = type.GetFields();
foreach (var field in fields)
{
if (field.Name != e.ToString())
{
continue;
}
//第二个参数true表示查找EnumDisplayNameAttribute的继承链
{
var attr = field.GetCustomAttribute(typeof(DescriptionAttribute), false) as DescriptionAttribute;
if (attr != null)
{
return attr.Description;
}
}
}
return e.ToString();
}
/// 根据枚举获取下拉框列表
///
///
///
public static List
{
var list = new List
{
list.Add(new ComboboxItemDto() { DisplayText = GetDescription(e as Enum), Value = ((int)e).ToString(), IsSelected = e == en });
}
}
/// 根据枚举获取下拉框列表
///
/// 枚举类型
///
public static List
{
var list = new List
{
list.Add(new ComboboxItemDto() { DisplayText = GetDescription(e as Enum), Value = ((int)e).ToString() });
}
}
}