在应用枚举的时候,时常需要将枚举和数值相互转换的情况。有时候还需要转换成相应的中文。下面介绍一种方法。
首先建立一个枚举:
////// 颜色 /// public enum ColorType { ////// 红色 /// Red, ////// 蓝色 /// Bule, ////// 绿色 /// Green }
获得枚举数值:
int code = ColorType.Red.GetHashCode();
有数值获得枚举名称:
string name1=ColorType.Red.ToString(); //或者 string name2= Enum.Parse(typeof(ColorType), code.ToString()).ToString();
以上获得的枚举名称,是英文,如果要获得相应的中文解释,可以利用Attribute来实现,代码如下:
////// 颜色 /// public enum ColorType { ////// 红色 /// [Description("红色")] Red, ////// 蓝色 /// [Description("蓝色")] Bule, ////// 绿色 /// [Description("绿色")] Green }
在枚举中,加入Description,然后建立一个类,有如下方法用来把枚举转换成对应的中文解释:
public static class EnumDemo { private static string GetName(System.Type t, object v) { try { return Enum.GetName(t, v); } catch { return "UNKNOWN"; } } ////// 返回指定枚举类型的指定值的描述 /// /// 枚举类型 /// 枚举值 ///public static string GetDescription(System.Type t, object v) { try { FieldInfo oFieldInfo = t.GetField(GetName(t, v)); DescriptionAttribute[] attributes = (DescriptionAttribute[])oFieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); return (attributes.Length > 0) ? attributes[0].Description : GetName(t, v); } catch { return "UNKNOWN"; } } }
string name3=EnumDemo.GetDescription(typeof(ColorType), ColorType.Red)
name3得到的就是“红色”。