自定义一个特性
/// <summary>
/// 枚举备注特性
/// </summary>
public class EnumRemarkAttribute : Attribute
{
public string Remark { get; set; }
public EnumRemarkAttribute(string remark)
{
this.Remark = remark;
}
}
特性对应枚举使用
/// <summary>
/// 用户学历
/// </summary>
public enum UserEducation
{
/// <summary>
/// 小学
/// </summary>
[EnumRemark("小学")]
PrimarySchool = 1,
/// <summary>
/// 高中
/// </summary>
[EnumRemark("高中")]
HighSchool = 2,
/// <summary>
/// 大学
/// </summary>
[EnumRemark("大学")]
University = 3
}
新增一个枚举扩展方法
public static class EnumRemark
{
public static string GetRemark(this Enum enumInfo)
{
Type type = enumInfo.GetType();
//获取字段信息
FieldInfo field = type.GetField(enumInfo.ToString());
//检查字段是否含有指定特性
if (field.IsDefined(typeof(EnumRemarkAttribute), true))
{
//获取字段上的自定义特性
EnumRemarkAttribute remarkAttribute = (EnumRemarkAttribute)field.GetCustomAttribute(typeof(EnumRemarkAttribute));
return remarkAttribute.Remark;
}
else
{
return enumInfo.ToString();
}
}
}
使用Demo
static void Main(string[] args)
{
UserEducation userEducation = UserEducation.HighSchool;
Console.WriteLine((int)userEducation); //2
Console.WriteLine(userEducation.ToString()); //HighSchool
Console.WriteLine(userEducation.GetRemark()); //高中;
}