定义这样一个枚举:
//颜色枚举
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();
}
使用场景:通过这种思路可以获取到任意类型的特性标签的值,上面这个扩展方法可以用于获取描述信息,生成下拉列表、单选、复选等应用场景,而不用在多个地方编写重复的文字描述。