1.创建RemarkAttribute类,继承Attribute
public class RemarkAttribute:Attribute
{
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
public RemarkAttribute(string remark)
{
this.Remark = remark;
}
}
2.写好enum扩展方法
public static class EnumEx
{
/// <summary>
/// 根据枚举元素,获取该枚举元素的描述信息
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="tField"></param>
/// <returns></returns>
public static string GetEnumDesc<T>(this T tField) where T:struct
{
var description = string.Empty; //结果
var inputType = tField.GetType(); //输入的类型
var descType = typeof(RemarkAttribute); //目标查找的描述类型
var fieldStr = tField.ToString(); //输入的字段字符串
var field = inputType.GetField(fieldStr); //目标字段
var isDefined = field?.IsDefined(descType, false);//判断描述是否在字段的特性
if (isDefined??false)
{
var enumAttributes = field.GetCustomAttributes(descType, false) as RemarkAttribute[]; //得到特性信息
description = enumAttributes?.FirstOrDefault()?.Remark ?? string.Empty;
// description = string.Join(',', enumAttributes?.Select(t => t.Remark));
}
return description;
}
}
3.在枚举上添加特性
public enum TestEnum
{
[RemarkAttribute("我是T1")]
T1,
[RemarkAttribute("我是T2")]
T2,
[RemarkAttribute("我是T3")]
T3
}
4. 测试