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++中的枚举更成熟 ...
随机推荐
- 详解 LinkedHashMap
同学们可能在看到这个类的时候就明白了很多关于这个类的特点,那么,本人就在这里来啰嗦一下,再来介绍下这个类: (有关Map集合的基本性质,请观看本人博文-- <详解 Map集合>) Link ...
- Redis安装部署(一主二从三哨兵)
需求:根据当前客户的生产环境,模拟安装部署Redis的测试环境,方便后续的功能测试. 1.准备工作 2.安装编译Redis 3.Redis运行环境配置 4.Redis启动和关闭 1.准备工作 Redi ...
- 2. node xlsx的使用
1. 使用xlsx模块 const xlsx = require('xlsx'); //excel async exportexcel() { let arrayData = [ ['姓名', '电话 ...
- GIT生成ssh(window7系统)——git工具篇
由于本地git仓库和github仓库直接的传递需要ssh加密的,所以必须要生成ssh,下面是具体的操作步骤: 1.打开GIT命令行,输入命令:ssh-keygen -t rsa -C "yo ...
- Linux网络编程(1)
Preview 课程要求,所以学了一下UNIX网络编程,老师说挺简单的,实际上手之后才发现这里面关系没那么简单.从CS:APP11章网络编程,再加上不停地man,对当前的学习做个总结,也顺带当个报告了 ...
- HTML+CSS教程(四)选择器(id选择器,类选择器,标签选择器,子代选择器,后代选择器,组选择器,伪类选择器)/css引入页面的形式(行内样式、内嵌样式、外联样式)
一.回顾内容 前端的三大组成(三大模块) HTMl(超文本标记语言) 结构层 css(层叠样式表) 表现层:用来美化HTML结构 JS(Java script)(脚本语言) 行为层: ...
- RSA非对称可逆加密
/// <summary> /// RSA ECC /// 可逆非对称加密 /// 非对称加密算法的优点是密钥管理很方便,缺点是速度慢. /// </summary> usin ...
- pytorch中tensor张量的创建
import torch import numpy as np print(torch.tensor([1,2,3])) print(torch.tensor(np.arange(15).reshap ...
- scrapy爬虫实例(1)
爬虫实例 对象 阳光问政平台 目标 : 主题,时间,内容 爬取思路 预先设置好items import scrapy class SuperspiderItem(scrapy.Item): title ...
- discuz修改禁止性别保密选项
第一步找到source/function/function_profile.php 第二步 注释下面的代码 else { $html .= '<option value="0&quo ...