/// <summary>
/// get enum description by name
/// </summary>
/// <typeparam name="T">enum type</typeparam>
/// <param name="enumItemName">the enum name</param>
/// <returns></returns>
public static string GetDescriptionByName<T>(T enumItemName)
{
FieldInfo fi = enumItemName.GetType().GetField(enumItemName.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute), false); if (attributes != null && attributes.Length > )
{
return attributes[].Description;
}
else
{
return enumItemName.ToString();
}
}
         /// <summary>
/// 获取描述
/// </summary>
/// <param name="en"></param>
/// <returns></returns>
public static string GetEnumText(this Enum en)
{
FieldInfo fi = en.GetType().GetField(en.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute), false); if (attributes != null && attributes.Length > )
{
return attributes[].Description;
}
else
{
return en.ToString();
}
}
         /// <summary>
/// 枚举转list
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static List<EnumModel> ConvertEnumToList<T>()
{
List<EnumModel> list = new List<EnumModel>(); foreach (var e in Enum.GetValues(typeof(T)))
{
EnumModel m = new EnumModel();
m.Value = Convert.ToInt32(e);
m.Description = EnumHelper.GetDescriptionByName((T)e);
list.Add(m);
}
return list;
} public class EnumModel
{
public int Value { get; set; }
public string Description { get; set; }
}
         /// <summary>
/// 根据枚举值获得枚举描述
/// </summary>
/// <param name="e"></param>
/// <param name="value"></param>
/// <returns></returns>
public static String GetEnumDesc(this Type e, int? value)
{
FieldInfo[] fields = e.GetFields();
for (int i = , count = fields.Length; i < count; i++)
{
if ((int)System.Enum.Parse(e, fields[i].Name) == value)
{
DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])fields[i].
GetCustomAttributes(typeof(DescriptionAttribute), false);
if (EnumAttributes.Length > )
{
return EnumAttributes[].Description;
}
}
}
return "";
}

.NET--------枚举扩展方法(枚举转list,获取枚举描述)的更多相关文章

  1. C#枚举扩展方法,获取枚举值的描述值以及获取一个枚举类下面所有的元素

    /// <summary> /// 枚举扩展方法 /// </summary> public static class EnumExtension { private stat ...

  2. 枚举扩展方法获取枚举Description

    枚举扩展方法 /// <summary> /// 扩展方法,获得枚举的Description /// </summary> /// <param name="v ...

  3. .NET(C#):使用反射来获取枚举的名称、值和特性【转】

    首先需要从内部了解一下枚举(Enumeration),相信许多人已经知道了,当我们声明一个这样的枚举类型: enumMyEnum { AAA, BBB, CCC } 背后的IL是这样的: .class ...

  4. .NET(C#):使用反射来获取枚举的名称、值和特性

    首先需要从内部了解一下枚举(Enumeration),相信许多人已经知道了,当我们声明一个这样的枚举类型: enum MyEnum { AAA, BBB, CCC } 背后的IL是这样的: .clas ...

  5. c#获取枚举

    在实际开发项目中,我们定义了一个枚举,往往我们需要在下拉框或其它地方展示枚举.为了加深印象,也为了帮到有需要的人,我写了一个DEMO. 第一步,我们定义一个枚举: /// <summary> ...

  6. jsp获取枚举的值

    Struts2的Action传回页面一个list,页面迭代这个list,获取下拉框的值,获取过来是枚举类型. 在jsp页面获取枚举的常量值和枚举的值的例子如下: jsp页面: <td >状 ...

  7. C#的扩展方法解析

    在使用面向对象的语言进行项目开发的过程中,较多的会使用到“继承”的特性,但是并非所有的场景都适合使用“继承”特性,在设计模式的一些基本原则中也有较多的提到. 继承的有关特性的使用所带来的问题:对象的继 ...

  8. C# 知识回顾 - 扩展方法解析

    在使用面向对象的语言进行项目开发的过程中,较多的会使用到“继承”的特性,但是并非所有的场景都适合使用“继承”特性,在设计模式的一些基本原则中也有较多的提到. 继承的有关特性的使用所带来的问题:对象的继 ...

  9. Farseer.net轻量级开源框架 中级篇:常用的扩展方法

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseM ...

  10. WebAPi添加常用扩展方法及思维发散

    前言 在WebAPi中我们通常需要得到请求信息中的查询字符串或者请求头中数据再或者是Cookie中的数据,如果需要大量获取,此时我们应该想到封装一个扩展类来添加扩展方法,从而实现简便快捷的获取. We ...

随机推荐

  1. 【php】单例模式和工厂模式

    单例模式:防止重复实例化,避免大量的new操作,减少消耗系统和内存的资源,使得有且仅有一个实例对象 header("Content-type: text/html; charset=utf- ...

  2. Maven工程的POM继承

    父POM的作用是消除配置的重复. 父POM必须<packaging>pom</packaging>. 还有 <modules> <module>子模块1 ...

  3. day2——两数相加

    // 小白一名,0算法基础,艰难尝试算法题中,若您发现本文中错误, 或有其他见解,往不吝赐教,感激不尽,拜谢. 领扣 第2题 今日算法题干//给定两个非空链表来表示两个非负整数.位数按照逆序方式存储, ...

  4. 学习笔记74—函数argsort()

    ****************************************************** 如有谬误,请联系指正.转载请注明出处. 联系方式: e-mail: heyi9069@gm ...

  5. 给echart初始化的dom节点绑定时间获取点击的值渲染省市区

    this.drawMap().on('click', function (params) { var province = params.name; that.mapStatus = province ...

  6. Xshell利用lrzsz工具上传下载

    直接安装这个lrzsz工具 yum install lrzsz 上传 rz 下载 sz

  7. LVM方式安装Ubuntu 系统

    重装Ubuntu系统,使用LVM管理磁盘,最好不要使用默认的LVM安装方式,而应挂载U盘启动盘,进行物理磁盘分区,创建物理卷.卷组.虚卷(即创建LVM系列操作),在安装系统时将虚卷挂载到文件目录上.将 ...

  8. PAT 1152 Google Recruitment

    1152 Google Recruitment (20 分)   In July 2004, Google posted on a giant billboard along Highway 101 ...

  9. hive -- 自定义函数和Transform

    hive -- 自定义函数和Transform UDF操作单行数据, UDAF:聚合函数,接受多行数据,并产生一个输出数据行 UDTF:操作单个数据 使用udf方法: 第一种: add jar xxx ...

  10. wait和sleep的区别

    wait是线程永久等待,只有调用notify才能进行唤醒 sleep是等待指定的时间,自动唤醒