博主喝口茶,一毛也是爱

收缩

C# 通过特性获取枚举中文备注信息

6058 人阅读
分类:
/// <summary>
/// 枚举备注特性
/// </summary>
public class EnumRemarkAttribute : Attribute
{
    public string Remark { get; set; }
    public EnumRemarkAttribute(string remark)
    {
        this.Remark = remark;
    }
}

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();
        }
    }
}

/// <summary>
/// 用户学历
/// </summary>
public enum UserEducation
{
    /// <summary>
    /// 小学
    /// </summary>
    [EnumRemark("小学")]
    PrimarySchool = 1,
    /// <summary>
    /// 高中
    /// </summary>
    [EnumRemark("高中")]
    HighSchool = 2,
    /// <summary>
    /// 大学
    /// </summary>
    [EnumRemark("大学")]
    University = 3
}
static void Main(string[] args)
{
    UserEducation userEducation = UserEducation.HighSchool;
    Console.WriteLine((int)userEducation);          //2
    Console.WriteLine(userEducation.ToString());    //HighSchool
    Console.WriteLine(userEducation.GetRemark());   //高中;
}


和博主交个朋友吧
    发布篇幅
    • 文章总数:0
    • 原创:0
    • 转载:0
    • 译文:0
    文章分类
      文章存档
      阅读排行