首页 > 技术文章 > 数据库字段数字表示含义的枚举维护

shousiji 2017-08-21 15:36 原文

数据库中有个数值字段BillType,

意思和程序中枚举对应如下:

 

这样写是挺方便的,循环展示直接ToString()就得到相应的中文,还能做数值对比,

奈何领导说不能用中文,怕以后会遇到不可思议的麻烦,于是只能改造:

 

自定义特性标签:

public class RemarkAttribute : Attribute
{
    private string _remark;
    public RemarkAttribute(string _remark)
    {
        this._remark = _remark;
    }
    public string Remark
    {
        get { return _remark; }
        set { _remark = value; }
    }
}

 

扩展Enum,获取特性标签中的中文:

public static class EnumExtension
{
    public static string GetEnumRemark(this System.Enum _enum)
    {
        Type type = _enum.GetType();
        string name = _enum.ToString();
        FieldInfo fd = type.GetField(name);
        if (fd == null) return string.Empty;
        var attr = fd.GetCustomAttribute<RemarkAttribute>();
        if (attr != null)
        {
            name = attr.Remark;
        }
        return name;
    }
}

 

 DropDownList中的循环绑定:

枚举的转换:

protected string GetTypeText(object obj)
{
    OrderTypeEnum en;
    if (!Enum.TryParse(obj.ToString(), out en))
    {
        return "";
    }
    return en.GetEnumRemark();
}

 

推荐阅读