数据库字段数字表示含义的枚举维护

数据库中有个数值字段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();
}
原文地址:https://www.cnblogs.com/shousiji/p/7404728.html