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

原文地址:http://mikeblog.cn/article/details/208

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值