EnumHelper枚举帮助类——反射取得枚举Description

1、需要引用的命名空间:

1 using System.Collections.Generic;//键值对
2 using System.Reflection;//反射
3 System.ComponentModel;//指定属性

2、直接上干货,需要的拿走:

(1)、列举所有枚举值和描述

 1         /// <summary>
 2         /// 列举所有枚举值和描述
 3         /// </summary>
 4         /// <typeparam name="T"></typeparam>
 5         /// <returns></returns>
 6         public static Dictionary<int, string> GetDescriptionDictionary<T>() where T : struct
 7         {
 8             Type type = typeof(T);
 9             Dictionary<int, string> dictionary = new Dictionary<int, string>();
10             foreach (int item in System.Enum.GetValues(type))
11             {
12                 string description = string.Empty;
13                 try
14                 {
15                     FieldInfo fieldInfo = type.GetField(System.Enum.GetName(type, item));
16                     if (fieldInfo == null)
17                     {
18                         continue;
19                     }
20                     DescriptionAttribute da = (DescriptionAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute));
21                     if (da == null)
22                     {
23                         continue;
24                     }
25                     description = da.Description;
26                 }
27                 catch { }
28                 dictionary.Add(item, description);
29             }
30             return dictionary;
31         }

(2)、列举所有枚举值和索引

 1         /// <summary>
 2         /// 列举所有枚举值和索引
 3         /// </summary>
 4         /// <param name="typeParam"></param>
 5         /// <returns></returns>
 6         public static Dictionary<int, string> EnumToFieldDictionary(Type typeParam)
 7         {
 8             //Type typeParam = typeof(obj);
 9             Dictionary<int, string> dictionary = new Dictionary<int, string>();
10             foreach (int i in System.Enum.GetValues(typeParam))
11             {
12                 string name = System.Enum.GetName(typeParam, i);
13                 dictionary.Add(i, name);
14             }
15             return dictionary;
16         }

(3)、获取指定枚举值的描述

 1         /// <summary>
 2         /// 获取指定枚举值的描述
 3         /// </summary>
 4         /// <typeparam name="T"></typeparam>
 5         /// <param name="request"></param>
 6         /// <returns></returns>
 7         public static string GetDescription<T>(T request) where T:struct
 8         {
 9             try
10             {
11                 Type type = request.GetType();
12                 FieldInfo fieldInfo = type.GetField(request.ToString());
13
14                 if (fieldInfo == null) { return string.Empty; }
15
16                 DescriptionAttribute da = (DescriptionAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute));
17
18                 if (da != null)
19                 {
20                     return da.Description;
21                 }
22                 else
23                 {
24                     return string.Empty;
25                 }
26             }
27             catch
28             {
29                 return string.Empty;
30             }
31         }

(4)、关于扩展
需要的童鞋可以自己写个【获取指定枚举值的描述】的扩展方法,小牛这里没有必要就没写。

【明日小牛】原创——转载请注明出处

时间: 2024-12-17 20:59:49

EnumHelper枚举帮助类——反射取得枚举Description的相关文章

java对枚举的类反射使用

import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.lang3.reflect.MethodUtils; /** * * <strong>功能:</strong>枚举使用工具 * <strong>作者:</strong>Gary Huang * <strong>日期:<

枚举帮助类

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Linq; 5 6 namespace EnumHelper 7 { 8 /// <summary> 9 /// 枚举帮助类 10 /// 1.获取枚举的描述文本 11 /// 2.获取枚举名和描述信息的列表 12 /// </summary> 13 public static class

mybatis自定义枚举转换类

mybatis提供了 EnumTypeHandler和EnumOrdinalTypeHandler完成枚举类型的转换,两者的功能已经基本满足了日常的使用.但是可能有这 样的需求:由于某种原因,我们不想使用枚举的name和ordinal作为数据存储字段.mybatis的自定义转换类出现了. 示例 使用一段代码,将枚举类EnumStatus中的code属性存储到数据库对应字段statusCustom. 自定义转换类 package com.sg.util.typehandler; import ja

C#通过反射进行枚举描述相关操作

C#可以通过反射,来获取枚举的描述信息或通过描述信息获取到指定类型的枚举 1 /// <summary> 2 /// 获取枚举描述 3 /// </summary> 4 /// <param name="enumName"></param> 5 /// <returns></returns> 6 public static string GetDescription(this Enum enumName) 7 {

【C#公共帮助类】枚举独特类

这个是枚举类,可能大家根据个人需求不同,不是很需要,但是跟着做那个项目的朋友会用到 我在这贴一下代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.ComponentModel; 6 7 namespace Common.Enums 8 { 9 /// <summary> 10 /// 枚举独特类 11 /// add yu

用起来很方便的枚举扩展类

因项目需要花了点时间写了个枚举扩展类,详细内容如下: 枚举声明: public enum Status { [Description("邀请加入")] 邀请加入 = 1, [Description("拒绝邀请")] 拒绝邀请 = 2, [Description("申请加入")] 申请加入 = 3, [Description("拒绝加入")] 拒绝加入 = 4, [Description("同意加入")] 同

枚举功能类

enum.php /** * 本类主要是实现枚举的功能 * @param unknown_type $base_class * @param unknown_type $args * @param unknown_type $codeArgs */ function enum($base_class, array $args,array $codeArgs){ $class_parts = preg_split('/\s+/', $base_class); $base_class_name =

OC基础--结构体 枚举做类成员属性

结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation/Foundation.h> typedef struct { int year; int month; int day; } Date; typedef enum { kGenderGirl = 0, kGenderBoy = 1, kGenderChunGe = 2 } Gender; @inter

跟王老师学枚举(三):枚举类API

跟王老师学枚举(三):枚举API 主讲教师:王少华   QQ群号:483773664 一.枚举类API Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum类的所有方法.常用方法: name():返回此枚举常量的名称 ordinal():返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零 valueof(Class enumClass, String name):返回带指定名称的指定枚举类型的枚举常量 valueof(String name):返回带指定