C#实现枚举的相关操作
枚举中的Descript()描述值,以及枚举值是一种一一对应的关系。我们可以获取其描述值和枚举值,存放到字典中,
在实际的使用中我们就可以轻松的根据枚举值来获取其描述值,也可以通过枚举的描述值来获取其枚举值。
根据枚举值来获取其描述值如下:
/// <summary>
/// 根据枚举值来获取描述信息
/// </summary>
/// <param name="e">枚举值</param>
/// <returns></returns>
public static string GetEnumDesc(Enum e)
{
DescriptionAttribute[] descAttribute = (DescriptionAttribute[])e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false);
return descAttribute == null || descAttribute.Length == 0 ? string.Empty : descAttribute[0].Description;
}
但是这种方法是比较单一的,只能根据一个枚举值来获取一个描述信息。
以下便可以实现获取所有的枚举值和秒速信息
/// <summary>
/// 根据枚举类型来获取枚举值和枚举描述信息
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static Dictionary<int, string> GetValueAndDesc<T>() {
Dictionary<int, string> dic = new Dictionary<int, string>();
try
{
foreach (FieldInfo item in typeof(T).GetFields())
{
if (item.FieldType.IsEnum)
{
int key = (int)typeof(T).InvokeMember(item.Name, BindingFlags.GetField, null, null, null);
DescriptionAttribute[] descs = (DescriptionAttribute[])item.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (descs.Length > 0 && !dic.ContainsKey(key))
{
dic.Add(key, descs[0].Description);
}
}
}
}
catch (Exception)
{ // throw; }
return dic;
}
这样之后我们可以轻松的通过键值对来轻松的获取我们先要的值或者描述信息。
------------------------哇!我这都三年5个月的博客龄了,不过一直没有写博客,希望通过我们分享,能给有需要的朋友们带来帮助--------------
C#实现枚举的相关操作的更多相关文章
- C#通过反射进行枚举描述相关操作
C#可以通过反射,来获取枚举的描述信息或通过描述信息获取到指定类型的枚举 /// <summary> /// 获取枚举描述 /// </summary> /// <par ...
- C#路径的八种相关操作,判断字符串是否为路径等
原文:C#路径的八种相关操作,判断字符串是否为路径等 1.判定一个给定的C#路径是否有效,合法 通过Path.GetInvalidPathChars或Path.GetInvalidFileNameCh ...
- MySQL 库、表、记录、相关操作(1)
库.表.记录.相关操作(1) 数据库配置 # 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) # 配置了 mysqld(服务端) 的编码为utf8,那么再创建的 ...
- MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型
一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...
- MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型
库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...
- 从零自学Hadoop(20):HBase数据模型相关操作上
阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 从零自学Hadoop(21):HBase数据模型相关操作下
阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
- Liunx下的有关于tomcat的相关操作 && Liunx 常用指令
先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...
随机推荐
- m序列生成电路
m序列
- Git/Github的使用并与Eclipse整合(zz)
Git/Github的使用并与Eclipse整合 您的评价: 收藏该经验 Git简介 Git是一个免费的.分布式的版本控制工具,或是一个强调了速度快的源代码管理工具.每一 ...
- 2017/2/10:Manven简介与项目管理(入门)
1.Maven工程的创建 2.使用Manven manven配置文件主要集中在 http://m.blog.csdn.net/article/details?id=50316383
- VB.NET and C# 差异
VB.NET Program Structure C# Imports System Namespace Hello Class HelloWorld Overloads Share ...
- vsftpd只能连接不能上传文件问题
Centos7 记得很清楚,vsftpd安装后,不需要配置,本地用户就可以正常使用(登录.上传.下载) 这次配的就是不行,另起了个虚拟机,装了下,就是不需要配置,但是在一台机上,就是不行,只能登录,下 ...
- RNN文章总结
1.RNN 基本结构类型 2. RNN 3.零基础入门深度学习(5) - 循环神经网络 4.
- 使用bat批处理文件定时自动备份oracle数据库并上传ftp服务器
一.使用bat批处理文件备份oracle(前提是配置好oracle数据库客户端) @echo off set databasename=orcl //数据库名 set username=ninic ...
- 使用Expression tree访问类的属性名称与值
表达式树Expression是Linq中一项比较重要的功能,对其深刻了解Lamda以及计算表达式有很大的帮助. 下面是利用 Expression<Func<Object>>[] ...
- 第23章:MongoDB-聚合操作--聚合命令
①count() 范例:统计students表中的数据量 db.students.count(); 范例:模糊查询 db.students.count("name":/张/i); ...
- SQL编写-谁和谁是好朋友
problem: 用户表 姓名 张三 李四 王五 好友表 姓名 好友姓名 张三 李四 张三 王五 李四 张三 用户表里面姓名必须在好友表里面互加为好友,请问如何找出还没有加为好友的姓名 ...