获取枚举常量的描述值Description

枚举

1.属于值类型,继承ValueType
2.声明枚举后直接使用。
3.所有枚举都是 Enum 类型的实例

过程

需求:获取枚举值得Description
方法:Description是一个特性,继承自Attribute,Attribute中有方法GetCustomAttribute可以获取到特性实例(在这里是获取DescriptionAttribute的实例),DescriptionAttribute中有方法Description获取到描述的值。

    public  enum Status 
    {
        [Description("删除")]
        Delete=1,
        [Description("禁用")]
        Disable=1,
       [Description("正常")]
        Normal=2
    }

           public static  string GetDescription( Enum value, bool nameInstend = true)
         {
            // 获取枚举类型Status
            var type = typeof(Status);
            // 获取常数名称Delete
            var name = Enum.GetName(type,Status.Delete);
            // 获取常数访问权限
            System.Reflection.FieldInfo field = type.GetField(name);
            // 获取常数上特性类(这里是DescriptionAttribute)
            var attribute = Attribute.GetCustomAttribute(field,typeof(DescriptionAttribute)) as DescriptionAttribute;
            // 用DescriptionAttribute的方法Description获取描述值
            Console.WriteLine(attribute.Description);
         }

猜你喜欢

转载自blog.csdn.net/qq_34720759/article/details/79739481