定义这样一个枚举:
//颜色枚举 internal enum Color { [Description("红色")] Red=0, [Description("绿色")] Green=1, [Description("蓝色")] Blue=2 }
获取枚举描述信息的扩展方法:
private static string GetDescription(this Enum value) { //得到枚举类型:返回 命名空间+枚举名 var type = value.GetType(); //得到字段:传入这个枚举类型和一个value,得到 枚举名.值 var field = type.GetField(Enum.GetName(type, value)); if (field == null) return ""; //得到这个枚举值所拥有的的标签中,类型为Description的标签 var desc = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; //返回这个标签的Description属性值 return desc != null ? desc.Description : ""; }
调用:
private static void Main(string[] args) { Color c = Color.Red; Console.WriteLine(c.GetDescription()); Console.ReadKey(); }
使用场景:通过这种思路可以获取到任意类型的特性标签的值,上面这个扩展方法可以用于获取描述信息,生成下拉列表、单选、复选等应用场景,而不用在多个地方编写重复的文字描述。