C# 中 枚举Enum 一些转换的方法整理
工作中 经常遇到枚举 的一些转换 特别是获取枚举备注等 特地整理下 方法以后使用
public void TestMethod1()
{
TestEnumOne colorEnum = TestEnumOne.Red;
int colorValue = 0x0000FF;
string colorStr = "Red";
string colorDes = "红色"; //枚举To枚举字符串
colorStr = colorEnum.ToString();
colorStr = Enum.GetName(typeof(TestEnumOne), colorEnum);
//枚举值To枚举字符串
colorStr = Enum.GetName(typeof(TestEnumOne), colorValue); //枚举To枚举值
colorValue = colorEnum.GetHashCode();
colorValue = (int)colorEnum;
//枚举字符To枚举值
colorValue = Enum.Parse(typeof(TestEnumOne), colorStr).GetHashCode();
colorValue = (int)Enum.Parse(typeof(TestEnumOne), colorStr); //枚举字To枚举
colorEnum = (TestEnumOne)Enum.Parse(typeof(TestEnumOne), colorStr);
//枚举值To枚举
colorEnum = (TestEnumOne)colorValue; //根据枚举获取备注
colorDes = TestEnumOne.Red.GetEnumDescriptionByEnum(typeof(TestEnumOne));
//根据枚举值获取备注
colorDes = TestEnumOne.Blue.GetEnumDescriptionByEnumValue(typeof(TestEnumOne), colorValue);
//根据枚举字符串获取备注
colorDes = TestEnumOne.Blue.GetEnumDescriptionByEnumString(typeof(TestEnumOne), colorStr);
}
下面是一个 枚举 和上面用到的一些方法
public static class EnumClass
{
public enum TestEnumOne
{
[Description("红色")]
Red = 0xff0000,
[Description("橙色")]
Orange = 0xFFA500,
[Description("黄色")]
Yellow = 0xFFFF00,
[Description("蓝色")]
Blue = 0x0000FF,
} /// <summary>
/// 根据枚举获取备注
/// </summary>
/// <param name="aEnum">枚举</param>
/// <param name="enumType">枚举类型</param>
/// <returns>备注</returns>
public static string GetEnumDescriptionByEnum(this Enum aEnum, System.Type enumType)
{
string enumDescription = string.Empty;
foreach (System.Enum enumItem in System.Enum.GetValues(enumType))
{
string enumString = Enum.GetName(enumType, aEnum);
if (enumString.ToLower() == Enum.GetName(enumType, enumItem).ToLower())
{
FieldInfo fi = enumType.GetField(enumString);
DescriptionAttribute da = (DescriptionAttribute)Attribute.GetCustomAttribute(fi, enumType);
if (da != null)
{
enumDescription = da.Description;
}
}
}
return enumDescription;
} /// <summary>
/// 根据枚举值获取备注
/// </summary>
/// <param name="aEnum">枚举</param>
/// <param name="enumType">枚举类型</param>
/// <param name="enumValue">枚举值</param>
/// <returns>备注</returns>
public static string GetEnumDescriptionByEnumValue(this Enum aEnum, System.Type enumType, int enumValue)
{
string enumDescription = string.Empty;
foreach (System.Enum enumItem in System.Enum.GetValues(enumType))
{
if (enumItem.GetHashCode() == (int)enumValue)
{
string enumString = Enum.GetName(enumType, enumValue);
FieldInfo fi = enumType.GetField(enumString);
DescriptionAttribute da = (DescriptionAttribute)Attribute.GetCustomAttribute(fi, enumType);
if (da != null)
{
enumDescription = da.Description;
}
}
}
return enumDescription;
} /// <summary>
/// 根据枚举字符串获取备注
/// </summary>
/// <param name="aEnum">枚举</param>
/// <param name="enumType">枚举类型</param>
/// <param name="enumValue">枚举值</param>
/// <returns>备注</returns>
public static string GetEnumDescriptionByEnumString(this Enum aEnum, System.Type enumType, string enumString)
{
string enumDescription = string.Empty;
foreach (System.Enum enumItem in System.Enum.GetValues(enumType))
{
if (enumString.ToLower() == Enum.GetName(enumType, enumItem).ToLower())
{
FieldInfo fi = enumType.GetField(enumString);
DescriptionAttribute da = (DescriptionAttribute)Attribute.GetCustomAttribute(fi, enumType);
if (da != null)
{
enumDescription = da.Description;
}
}
}
return enumDescription;
}
}
C# 中 枚举Enum 一些转换的方法整理的更多相关文章
- 关于Java中枚举Enum的深入剖析
在编程语言中我们,都会接触到枚举类型,通常我们进行有穷的列举来实现一些限定.Java也不例外.Java中的枚举类型为Enum,本文将对枚举进行一些比较深入的剖析. 什么是Enum Enum是自Java ...
- C++和Java中枚举enum的用法
在C++和java中都有枚举enum这个关键字,但是它们之间又不太一样.对于C++来说,枚举是一系列命名了的整型常量,而且从枚举值转化为对应的整型值是在内部进行的.而对于Java来说,枚举更像一个类的 ...
- JAVA中枚举Enum详解
1.关键字:enum.枚举可以定义成单独的文件,也可以定义在其他类内部. 枚举在类内部的示例: public class EnumInner { public static void main(Str ...
- Python中模拟enum枚举类型的5种方法分享
这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下 以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...
- MVC3不能正确识别JSON中的Enum枚举值
一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...
- springboot mybatis自定义枚举enum转换
原文链接:https://blog.csdn.net/u014527058/article/details/62883573 一.概述 在利用Spring进行Web后台开发时,经常会遇到枚举类型的绑定 ...
- [转载] Java中枚举类型的使用 - enum
目录 1 枚举类的编译特性 2 向枚举类中添加方法 3 接口内部创建枚举 4 枚举类中使用枚举 5 扩展: 验证values()不是通过父类继承的 本文转载自博客 - Java枚举类型, 博主对原文内 ...
- Java中的enum枚举类
首先说说为什么要写这个enum枚举类吧,是群里有个新手问:怎样把enum类中的值遍历得到,其实自己用的也很少.自己也是确实不知道,于是我去网上搜了不少,总结了些,希望对大家有帮助:首先我说说怎样遍历枚 ...
- Android中是否推荐使用枚举Enum
一.Enum的产生 Java1.5中引入了枚举的语法,包括Enum,EnumSet,EnumMap等.其中Enum就是我们在C或C++中见过的枚举类型,但是Java中的枚举又比C或C++中的枚举更成熟 ...
随机推荐
- Julia控制流
- re模块语法—python正则表达式
用字符串匹配实现 对于简单的匹配查找,可以通过字符串匹配实现,比如:查找以”hello”开头的字符串 此时就可以正确查找出以start开始的字符串了 python中的正则表达式模块 在python中为 ...
- VXLAN 基础教程:在 Linux 上配置 VXLAN 网络
上篇文章结尾提到 Linux 是支持 VXLAN 的,我们可以使用 Linux 搭建基于 VXLAN 的 overlay 网络,以此来加深对 VXLAN 的理解,毕竟光说不练假把式. 1. 点对点的 ...
- 掷骰子 dp
B. 掷骰子 单点时限: 2.0 sec 内存限制: 512 MB 骰子,中国传统民间娱乐用来投掷的博具,早在战国时期就已经被发明. 现在给你 n 个骰子,求 n 个骰子掷出点数之和为 a 的概率是多 ...
- php7.2.1+redis3.2.1 安装redis扩展(windows系统)
前提:已成功安装PHP环境和Redis服务 下面进入正题: 第一步,下载redis驱动扩展文件,注意:需要根据上面信息下载对应版本 https://windows.php.net/downloads/ ...
- 文字检测模型EAST应用详解 ckpt pb的tf加载,opencv加载
参考链接:https://github.com/argman/EAST (项目来源) https://github.com/opencv/opencv/issues/12491 (遇到的问题) ...
- 深入浅出webpack笔记
1.CommonJS CommonJS是一种被广泛使用的JavaScript模块化规范,其核心思想是用过require方法来同步加载依赖的其他模块,通过moudle.exports导出需要暴露的接口, ...
- mongodb connection refused because too many open connections: 819
Env Debian 9 # 使用通用二进制方式安装 # mongod --version db version v3.4.21-2.19 git version: 2e0631f5e0d868dd5 ...
- tp3.2的__construct和_initialize方法
在tp3.2框架里面,有一个php自带的__construct()构造函数和tp3自带的构造函数_initialize()的实行顺序是先实行 php自带的__construct()构造函数 再实行 t ...
- 2019-2020-1 20199325《Linux内核原理与分析》第六周作业
正常的使用gdb跟踪分析函数调用 使用make rootfs命令 *用gdb跟踪分析一个系统调用内核函数 对于宏SAVE_ALL来说,这条语句会保存当前线程的现场,然后是执行system_call,跳 ...