获取Enum的扩张方法。
public static class EnumExtention
    {
        /// <summary>
        /// 获取枚举的描述信息
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static Dictionary<int, string> GetDescription<T>()
            where T : struct, IComparable, IFormattable, IConvertible
        {
            var t = typeof(T);
            if (t.IsEnum)
            {
Dictionary<int, string> list = new Dictionary<int, string>();
                Array a = Enum.GetValues(t);
                for (int i = 0; i < a.Length; i++)
                {
                    string enumName = a.GetValue(i).ToString();
                    int enumKey = (int)System.Enum.Parse(t, enumName);
                    string enumDescription = GetDescription(t, enumKey);
                    list.Add(enumKey, enumDescription);
                }
                return list;
            }
            return null;
        }
#region 工具函数
private static string GetName(System.Type t, object v)
        {
            try
            {
                return Enum.GetName(t, v);
            }
            catch
            {
                return "UNKNOWN";
            }
        }
/// <summary>
        /// 返回指定枚举类型的指定值的描述
        /// </summary>
        /// <param name="t">枚举类型</param>
        /// <param name="v">枚举值</param>
        /// <returns></returns>
        private static string GetDescription(System.Type t, object v)
        {
            try
            {
                FieldInfo fi = t.GetField(GetName(t, v));
                DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
                return (attributes.Length > 0) ? attributes[0].Description : GetName(t, v);
            }
            catch
            {
                return "UNKNOWN";
            }
        }
        #endregion
    }
获取Enum的扩张方法。的更多相关文章
- 获取Enum枚举值描述的几法方法
		原文:获取Enum枚举值描述的几法方法 1.定义枚举时直接用中文 由于VS对中文支持的很不错,所以很多程序员都采用了此方案. 缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用 ... 
- 通过重写 class 的 ToString() 来简化获取 enum 的 DescriptionAttribute 值
		通过重写 class 的 ToString() 来简化获取 enum 的 DescriptionAttribute 值 目录 一.常见的 enum 类型 二.演变:class 版本的 enum 类型 ... 
- [No00006F]总结C#获取当前路径的各种方法
		using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ... 
- VMware桥接模式无法自动化获取IP的解决方法
		虚拟机桥接无法自动获取IP的解决方法 在虚拟机VM里面装了centos系统,网卡选用桥接方式. 刚开始的时候还能自动获取到IP地址,突然有一天IP消失了,再怎么重启都无法获取IP地址.因为之前是可以获 ... 
- C#的path.GetFullPath 获取上级目录实现方法
		这篇文章主要介绍了C#的path.GetFullPath 获取上级目录实现方法,包含了具体的C#实现方法以及ASP.net与ASP等的方法对比,非常具有实用价值,需要的朋友可以参考下 本文实例讲述 ... 
- 多浏览器兼容用javascript获取url参数的方法比较推荐的一种
		多浏览器兼容用javascript获取url参数的方法比较推荐的一种 <script language = javascript> function request(paras){ var ... 
- 使用jquery获取url以及jquery获取url参数的方法
		使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下 1.window.location.href; 其实只是用到了javas ... 
- Spring3 MVC请求参数获取的几种方法
		Spring3 MVC请求参数获取的几种方法 一. 通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}&q ... 
- 2dtoolkit获取sprite像素大小的方法
		获取sprite像素的方法 Vector2 GetPixelSize(tk2dSpriteDefinition def){ ].x; ].y; // Calculate dimensions in p ... 
随机推荐
- Spark PySpark数据类型的转换原理—Writable Converter
			Spark目前支持三种开发语言:Scala.Java.Python,目前我们大量使用Python来开发Spark App(Spark 1.2开始支持使用Python开发Spark Streaming ... 
- makefile 自动处理头文件的依赖关系 (zz)
			现在我们的Makefile写成这样: all: main main: main.o stack.o maze.ogcc $^ -o $@ main.o: main.h stack.h maze.hst ... 
- Selenium 脚本稳定性问题
			运行一个星期前升至更久前的脚本,,,出现如下错误提示 elementNotVisibleException was unhandled by user code. 经过询问大侠,说我的脚本不够健全,也 ... 
- Java中的包
			包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ... 
- asterisk manager api 配置 (manager.conf)
			http://blog.csdn.net/niino/article/details/5748805 要激活AMI,需要在/etc/asterisk/manager.conf中,[general]块下 ... 
- mysql 表设计
- [转载]opencv MSER
			最大稳定极值区域(MSER-Maximally Stable Extremal Regions)可以用于图像的斑点区域检测.该算法最早是由Matas等人于2002年提出,它是基于分水岭的概念. MSE ... 
- BZOJ1176: [Balkan2007]Mokia CDQ分治
			最近很不对啊=w= 写程序全是bug啊 ans数组开小了竟然一直不知道,小数据没问题大数据拍不过,交上去RE 蛋疼半天 这个主要把每次询问拆成3个询问. #include<cstdio> ... 
- CSS3动画变形transition
			<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ... 
- 改变Android按钮背景颜色的高效方法
			本文将介绍一种有效改变Android按钮颜色的方法. 按钮可以在状态改变时改变其颜色(例如按下,禁用,高亮显示).但是,这需要一一说明每个状态.这篇文章将提供你一个根据状态变化轻松改变按钮颜色的方法. ... 
