using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Json;
using System.IO;
using System.Data;
using System.ComponentModel;
using System.Web.UI.WebControls;

namespace SieCom.YQ.Common
{
    public class CommondLibray
    {
        public CommondLibray()
        {
            //TODO
        }

#region 根据枚举值获取枚举描述信息(单个)
        /// <summary>
        /// 根据枚举值获取枚举描述信息(单个)
        /// </summary>
        /// <typeparam name="TEnum">枚举</typeparam>
        /// <param name="value">枚举值</param>
        /// <returns></returns>
        public static string GetEnumDescription<TEnum>(object value)
        {
            string result = string.Empty;
            Type enumType = typeof(TEnum);
            if (enumType.IsEnum)
            {
                var name = System.Enum.GetName(enumType, Convert.ToInt32(value));
                if (name != null)
                {
                    object[] objs = enumType.GetField(name).GetCustomAttributes(typeof(DescriptionAttribute), false);
                    if (objs != null && objs.Length > 0)
                    {
                        DescriptionAttribute attr = objs[0] as DescriptionAttribute;
                        result = attr.Description;
                    }
                    else
                    {
                        //TODO
                    }
                }
                else
                {
                    //TODO
                }
            }
            return result;
        }
        #endregion

#region 获取枚举列表
        /// <summary>
        /// 获取枚举列表
        /// </summary>
        /// <param name="enumType">枚举类型</param>
        /// <param name="IsAll">是否在枚举列表前加入全部</param>
        /// <returns>枚举对应的ListItem</returns>
        public static List<ListItem> GetEnumList(Type enumType, bool IsAll)
        {
            List<ListItem> list = new List<ListItem>();
            if (enumType.IsEnum)
            {
                if (IsAll)
                    list.Add(new ListItem("--请选择--", "-1"));
                Type type = typeof(DescriptionAttribute);
                System.Reflection.FieldInfo[] files = enumType.GetFields();
                string strText = string.Empty;
                string strValue = string.Empty;
                foreach (System.Reflection.FieldInfo field in files)
                {
                    if (field.IsSpecialName) continue;
                    strValue = field.GetRawConstantValue().ToString();
                    object[] arr = field.GetCustomAttributes(type, true);
                    if (arr.Length > 0)
                        strText = (arr[0] as DescriptionAttribute).Description;
                    else strText = field.Name;

list.Add(new ListItem(strText, strValue));
                }
            }
            return list;
        }
        #endregion
    }
}

C# 读取枚举描述信息实例的更多相关文章

  1. EnumHelper.cs枚举助手(枚举描述信息多语言支持)C#

    C#里面经常会用到枚举类型,枚举是值类型对象,如果你想用枚举类型的多属性特性,或者你想在MVC页面上通过简单的值类型转换,将某字段值所代表的含义转换为文字显示,这时候必须要将枚举扩展,是它支持文本描述 ...

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

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

  3. 利用DescriptionAttribute定义枚举值的描述信息 z

    System.ComponentModel命名空间下有个名为DescriptionAttribute的类用于指定属性或事件的说明,我所调用的枚举值描述信息就是DescriptionAttribute类 ...

  4. 在C#中如何读取枚举值的描述属性

    在C#中,有时候我们需要读取枚举值的描述属性,也就是说这个枚举值代表了什么意思.比如本文中枚举值 Chinese ,我们希望知道它代表意思的说明(即“中文”). 有下面的枚举: 1 2 3 4 5 6 ...

  5. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

  6. MVC中得到成员元数据的Description特性描述信息公用方法

    #region 从类型成员获取指定的Attribute T特性集合 /// <summary> /// 从类型成员获取指定的Attribute T特性集合 /// </summary ...

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

    C#可以通过反射,来获取枚举的描述信息或通过描述信息获取到指定类型的枚举 /// <summary> /// 获取枚举描述 /// </summary> /// <par ...

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

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

  9. C#取枚举描述

    一直都觉得枚举是个很不错的东西,可以给我们带来很多方便,而且也增加代码的可读性. 我在之前已经介绍过枚举的简要应用了,再次再来写下怎么获取枚举的描述. 源码如下: 首先,我们定义个含有描述的枚举类型 ...

随机推荐

  1. Python深复制浅复制or深拷贝浅拷贝

    1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象.(比深拷贝更加节省内存)2. copy.deepcopy 深拷贝 拷贝对象及其子对象 用一个简单的例子说明如下: >& ...

  2. JAVA:类,对象,成员属性,成员方法,构造方法,类变量,类方法<2>

    一.类的定义 一个全面的类定义是比较复杂的,  定义如下:

  3. ubuntu下安装git,sublime,nodejs

    用的是VMware10.0版本的虚拟机,很早之前下载的今天就直接用了,安装挺简单记得需要一个序列号.在这里:http://mirrors.163.com/ubuntu-releases/15.04/u ...

  4. 为apache与mysql创建快捷方式

    为apache与mysql创建快捷方式 1)为apache创建快捷方式(软链接) 以后我们就可以在终端的任一位置,使用apachectl start|stop|restart   2)为mysql创建 ...

  5. http请求访问过程

    流程图(理解): 域名的作用: 对外,供访问 对内,提供域名与目录的对应关系 步骤说明: http://www.163.com/index.html 第1步:在本机的hosts文件中查找域名与IP的对 ...

  6. 洛谷 P1195 口袋的天空

    题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在 ...

  7. Codevs 1078 ==Poj 1258 Agri-Net

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53270   Accepted: 22140 Description D ...

  8. Java线程角度的内存模型和volatile型变量

    内存模型的目标是定义程序中各个变量的访问 规则,即在虚拟机中将变量(包括实例字段,静态字段和构成数组对象的元素,不包括局部变量与方法参数,因为后者是线程私有的)存储到内存和从内存中取出变量这样的底层细 ...

  9. APUE习题8.7

    看书的时候发现这个习题没有答案,于是就想把自己做的结果贴上来,和大家分享分享! 首先把题目贴上来吧: /*********** 8.10节中提及POSIX.1要求在调用exec时关闭打开的目录流.按下 ...

  10. mysql 让一个存储过程定时作业的代码

    1.在mysql 中建立一个数据库 test1 语句:create database test1 2.创建表examinfo create table examinfo( id int auto_in ...