C# 读取枚举描述信息实例
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# 读取枚举描述信息实例的更多相关文章
- EnumHelper.cs枚举助手(枚举描述信息多语言支持)C#
C#里面经常会用到枚举类型,枚举是值类型对象,如果你想用枚举类型的多属性特性,或者你想在MVC页面上通过简单的值类型转换,将某字段值所代表的含义转换为文字显示,这时候必须要将枚举扩展,是它支持文本描述 ...
- .NET获取枚举DescriptionAttribute描述信息性能改进的多种方法
一. DescriptionAttribute的普通使用方式 1.1 使用示例 DescriptionAttribute特性可以用到很多地方,比较常见的就是枚举,通过获取枚举上定义的描述信息在UI上显 ...
- 利用DescriptionAttribute定义枚举值的描述信息 z
System.ComponentModel命名空间下有个名为DescriptionAttribute的类用于指定属性或事件的说明,我所调用的枚举值描述信息就是DescriptionAttribute类 ...
- 在C#中如何读取枚举值的描述属性
在C#中,有时候我们需要读取枚举值的描述属性,也就是说这个枚举值代表了什么意思.比如本文中枚举值 Chinese ,我们希望知道它代表意思的说明(即“中文”). 有下面的枚举: 1 2 3 4 5 6 ...
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...
- MVC中得到成员元数据的Description特性描述信息公用方法
#region 从类型成员获取指定的Attribute T特性集合 /// <summary> /// 从类型成员获取指定的Attribute T特性集合 /// </summary ...
- C#通过反射进行枚举描述相关操作
C#可以通过反射,来获取枚举的描述信息或通过描述信息获取到指定类型的枚举 /// <summary> /// 获取枚举描述 /// </summary> /// <par ...
- C#获取枚举描述代码
public class MusterEnum { /// 获取枚举的描述信息 /// </summary> /// <param name="e">传入枚 ...
- C#取枚举描述
一直都觉得枚举是个很不错的东西,可以给我们带来很多方便,而且也增加代码的可读性. 我在之前已经介绍过枚举的简要应用了,再次再来写下怎么获取枚举的描述. 源码如下: 首先,我们定义个含有描述的枚举类型 ...
随机推荐
- Mvc项目右键没有控制器选项
今天遇到了一个比较少见的问题,我用vs2010打开一个从Svn上拉下来的mvc2项目,在Controller文件夹上右键却发现没有新建控制器的选项,在View文件夹上右键也没有新建视图的选项. 我的第 ...
- 苹果系统开发中的混合编程(2):Swift和C的相互调用
在进行Swift和C之间的相互调用时,有必要先了解一下两种语言之间的类型转换关系: C 类型 Swift 类型 bool CBool char, signed char CChar unsig ...
- 什么是GPX
GPX(GPS eXchange Format, GPS交换格式)是一个XML格式,为应用软件设计的通用GPS数据格式. 它可以用来描述路点.轨迹.路程.这个格式是免费的,可以在不需要付任何许可费用的 ...
- 7款个性化jQuery/HTML5地图插件
现在我们经常会用到一些地图应用,无论是在网页上还是手机App中,地图貌似是一个不可或缺的应用.本文将带领大家一起来看看一些基于jQuery和HTML5的个性化地图插件,有几款地图比较实用,有些则是具有 ...
- ArcGIS Desktop开发基础(转)
http://www.cnblogs.com/maweifeng/archive/2006/07/19/455024.html 原文地址 ArcGIS Desktop开发的类型 ○ 自定义ArcMa ...
- 关于FileOutputStream的问题
FileoutputStream在文件不存在的情况下会新建文件,但是有几个注意点: 1.有目录名(文件夹名)和文件名重复的话,会报错: 2.目录名不存在的情况下,也会报错
- [windows phone开发]新生助手的开发过程与体会一
功能需求分析: 1. 为到达学院的新生指路,给出所有路线,并给出必要提示: 2. 对学院建筑进行介绍: 3. 对学院周边环境(交通.购物.银行等)进行介绍: 4. 必要的应用设置 总体设计: ...
- rest介绍
REST介绍 描述 rest即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软 ...
- 利用rsyslog 对linux 操作进行审计
环境:客户端和服务端都需要安装rsyslog服务 rsyslog server端 cd /etc/rsyslog.d/ cat server.conf $ModLoad imtcp $InputTC ...
- 2015.1写留言板的时用的 知识点和函数 --->总结
一:时间函数和uniqid() 1:uniqid():生成唯一的id, 无参数返回的字符串的长度为13,有参数为23 2:时间和时间戳相互转换的php函数 ①:time() 返回当前unix的时间戳 ...