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

第一步,我们定义一个枚举:

    /// <summary>
/// 测试枚举
/// </summary>
public enum EnumStatus
{
[Description("状态1")]
A = ,
[Description("状态2")]
B = ,
[Description("状态3")]
C =
}

第二步,为了方便查看我们获取的枚举,我们定义一个枚举模型:

    /// <summary>
/// 定义枚举模型
/// </summary>
public class EnumModel
{
/// <summary>
/// 枚举名称(类似本实例的A、B、C)
/// </summary>
public string Name { get; set; }
/// <summary>
/// 枚举值(类似本实例的1、2、3)
/// </summary>
public int Value { get; set; }
/// <summary>
/// 枚举描述
/// </summary>
public string Description { get; set; }
}

第三步,编写获取枚举的代码:

        /// <summary>
/// 获取枚举
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns></returns>
static List<EnumModel> Get(Type type)
{
List<EnumModel> list = new List<EnumModel>();
//获取枚举的所有字段
var enumFields = type.GetFields();
//遍历枚举的每个字段,读取每个枚举字段的属性值
foreach (var field in enumFields)
{
EnumModel model = new EnumModel();
var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute), false) as DescriptionAttribute;
if (attribute != null)
{
model.Description = attribute.Description;//枚举描述
model.Name = field.Name;//枚举名称
model.Value = (int)Enum.Parse(type, field.Name);//枚举值
list.Add(model);
}
}
return list;
}

最后一步,使用第三步定义的函数:

  static void Main(string[] args)
{
//获取枚举类型
var enumType = typeof(EnumStatus);
//获取枚举的属性
var list = Get(enumType);
//打印获取到的枚举属性值
list.ForEach(item =>
{
Console.WriteLine(string.Format("Description:{0},Name:{1},Value:{2}", item.Description, item.Name, item.Value));//打印枚举属性
});
Console.ReadLine();
}

到此,获取枚举就完成了。。

c#获取枚举的更多相关文章

  1. 第三章 EnumUtil根据值获取枚举对象

    项目中使用枚举类的好处这里不再赘述,在使用枚举值时,通常需要根据值来获取枚举对象,下面介绍两种实现方案: 1.在枚举类中定义方法实现 首先给出如下性别枚举类: public enum SexEnum ...

  2. .NET获取枚举DescriptionAttribute描述信息性能改进的多种方法

    一. DescriptionAttribute的普通使用方式 1.1 使用示例 DescriptionAttribute特性可以用到很多地方,比较常见的就是枚举,通过获取枚举上定义的描述信息在UI上显 ...

  3. 【转载】[C#]枚举操作(从枚举中获取Description,根据Description获取枚举,将枚举转换为ArrayList)工具类

    关键代码: using System; using System.Collections; using System.Collections.Generic; using System.Compone ...

  4. 获取枚举值上的Description特性说明

    /// <summary> /// 获取枚举值上的Description特性说明 /// </summary> /// <typeparam name="T&q ...

  5. C#获取枚举描述代码

    public class MusterEnum { /// 获取枚举的描述信息 /// </summary> /// <param name="e">传入枚 ...

  6. 获取枚举Description的Name

    /// <summary> /// 获取枚举Description的Name /// </summary> /// <param name="enumName& ...

  7. jsp页面用el表达式获取枚举的code

    jsp页面用el表达式获取枚举的code <c:set var="D_BUSINESS" value="<%=DeptEnum.D_BUSINESS%> ...

  8. C# .NET 获取枚举值的自定义属性(特性/注释/备注)信息

    一.引言 枚举为我看日常开发的可读性提供的非常好的支持,但是有时我们需要得到枚举值得描述信息或者是注释(备注)信息 比如要获得 TestEmun.aaa 属性值得备注 AAA,比较不方便得到. pub ...

  9. 获取枚举Name,Value,Description两种方法

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...

随机推荐

  1. 使用scp将文件/目录拷贝到另一台Linux主机上

    如何将一台Linux主机上的文件或目录拷贝到另一台Linux主机上,scp命令可以实现该需求 前提条件:两台Linux主机处于同一网段,可以互相ping通 操作如下: 文件拷贝 ①将本地文件拷贝到远端 ...

  2. Java:多线程<二> 同步

    由于多线程的访问出现延迟和线程的随机性,在使用多线程时往往会伴随安全性的问题,这些问题一旦出现将会是非常严重的.为了解决这种安全性问题,synchronized出现了. synchronized用法一 ...

  3. JavaScript中的eval()函数

    和其他很多解释性语言一样,JavaScript同样可以解释运行由JavaScript源代码组成的字符串,并产生一个值.JavaScript通过全局函数eval()来完成这个工作. eval(“1+2” ...

  4. Android--JUnit单元测试

      Android--JUnit单元测试 前言 本篇博客说明一下在Android开发中,如何使用JUnit进行单元测试.首先来了解一下什么是JUnit,JUnit测试是白盒测试,即主要是程序员自己对开 ...

  5. .NET笔试题集(一)

    1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 private : 私有成员, 在类的内部才可以访问. ...

  6. CBC和CTR解密模式——C++实现

    利用已经封装好的AES加密算法,实现CBC模式加密和CTR模式加密. (1)CBC解密 如图,CBC模式的解密,步骤主要有三个,首先是拿密文段逐一放到AES解密盒子里面得到一个结果temp(事先要把密 ...

  7. 数组第K小数问题 及其对于 快排和堆排 的相关优化比较

    题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...

  8. HDU 5838 (状压DP+容斥)

    Problem Mountain 题目大意 给定一张n*m的地图,由 . 和 X 组成.要求给每个点一个1~n*m的数字(每个点不同),使得编号为X的点小于其周围的点,编号为.的点至少大于一个其周围的 ...

  9. 黑马程序员:Java编程_面向对象

    =========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 面向对象和面向过程都是一种思想,面向过程强调的是功能行为,面向对象是将功能封装进 ...

  10. Polymer.js

    Polymer 1.0 教程 安装 bower install --save Polymer/polymer