通过枚举类型的value或者name获取description

来源:互联网 发布:linux tomcat自启动 编辑:程序博客网 时间:2024/05/16 01:43

首先 设置一个枚举类型

   public enum TimeOfDay
        {
            [Description("上午")]
            Morning = 1,
            [Description("中午")]
            Afternoon = 2,
            [Description("晚上")]
            Evening = 3,
        };


1,2,3 为对于的value

morning afternoon evening为name

  public enum TimeOfDay
        {
            [Description("上午")]
            Morning,
            [Description("中午")]
            Afternoon,
            [Description("晚上")]
            Evening,
        };

//此时从0开始  ,每次递增+1.可以通过Morning=1来更改枚举初始值。

注意 使用description需要引用  using System.ComponentModel;


typeof(TimeOfDay).GetEnumName(Value);  可以通过value 获取到name

typeof(TimeOfDay).GetField(name);可以通过name获取到对应的枚举信息

fieldinfo.GetCustomAttribute(typeof(DescriptionAttribute), false);用于指定成员的指定类型的自定义特性(false为不检查其上级)以得到description



以下为示例代码:

 public enum TimeOfDay        {            [Description("上午")]            Moning = 1,            [Description("中午")]            Afternoon = 2,            [Description("晚上")]            Evening = 3,        };        /// <summary>        /// 得到enum的属性值        /// </summary>        /// <returns></returns>        public static void GetDescriptionByValue(int EnumValue)        {            string name = typeof(TimeOfDay).GetEnumName(EnumValue);            FieldInfo fieldinfo = typeof(TimeOfDay).GetField(name);            Object obj = fieldinfo.GetCustomAttribute(typeof(DescriptionAttribute), false);            DescriptionAttribute ds = (DescriptionAttribute)obj;                        Console.WriteLine(ds.Description);            Console.ReadLine();                  }

运行:

 public static void Main()        {            GetDescriptionByValue(1);        }

注意引用:

using System;using System.ComponentModel;using System.Reflection;

得到结果:上午








0 0
原创粉丝点击