zoukankan      html  css  js  c++  java
  • C# 获取枚举的描述属性

        在使用枚举类型时,我们需要取名称和值,甚至有时候还需要取枚举类型的描述。通过反射,我们能获取到枚举类型的描述属性。

        首先我们需要给枚举类型添加描述属性(属性都没有是不可能取到的),[Description]就是描述属性,使用这个属性,我们需要添加 using System.ComponentModel 引用。

    public enum EnumSex
    {
        /// <summary>
        ////// </summary>
        [Description("")]
        Male = 0,
        /// <summary>
        ////// </summary>
        [Description("")]
        Female = 1
    }

        接着我们需要写一个获取描述属性的方法,FieldInfo需要添加 using System.Reflection 引用,DescriptionAttribute需要添加 using System.ComponentModel 引用。

    public string GetEnumDescription(Enum enumValue)
    {
        string value = enumValue.ToString();
        FieldInfo field = enumValue.GetType().GetField(value);
        object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);    //获取描述属性
        if (objs == null || objs.Length == 0)    //当描述属性没有时,直接返回名称
            return value;
        DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
        return descriptionAttribute.Description;
    }

        好了,现在我们可以获取到枚举的描述了。

    string sex = GetEnumDescription(EnumSex.Female);    //sex = "女"

        同理,我们可以给枚举类型赋上其他类型的属性,比如Obsolete,在GetEnumDescription方法里面将DescriptionAttribute换成ObsoleteAttribute,一样可以取到属性。

  • 相关阅读:
    L1-046. 整除光棍
    L2-014. 列车调度
    L2-009. 抢红包
    L2-005. 集合相似度
    L2-021. 点赞狂魔
    L1-033. 出生年
    设计模式之生成器模式
    设计模式之抽象工厂模式
    设计模式之工厂方法模式
    设计模式之简单工厂模式
  • 原文地址:https://www.cnblogs.com/TanSea/p/6923743.html
Copyright © 2011-2022 走看看