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++中的枚举更成熟 ...
随机推荐
- 绕过CDN查找真实 IP 姿势总结
返回域名解析对应多个 IP 地址,网站可能部署CDN业务,我们就需要bypass CDN,去查找真正的服务器ip地址 0x01.域名搜集 由于成本问题,可能某些厂商并不会将所有的子域名都部署 CDN, ...
- Ajax 简述与基础语法
目录 Ajax 1. 原生 JS 实现 Ajax 2. 使用 Ajax 实现异步通信 a. Ajax 的基础语法 b. 用 Ajax 传递数据 i. 传递字符串数据 ii. 传递 JSON 数据 3. ...
- Daily Scrum 12/18/2015
Process: Zhaoyang: Some IOS UI upgrade to increase the users' experience. Minlong: Build a restful s ...
- python圆周率计算小程序(非常慢)
源码: from math import fabs #导入数学模块 from time import perf_counter #导入时间模块 from numba import jit @jit d ...
- Java工作流引擎-集团模式下的权限 设计与实现
关键字 工作流开发框架权限设计.用户组.岗位.集团模式应用. java工作流程引擎, .net 工作流引擎,工作流开发框架 相关的表结构 -- 相关组织-表结构. SELECT No,Name,Par ...
- iOS GIF图片转UIImage
多平台保持统一风格的UI设计,少不了一些动态图片的使用 1.本地GIF图片使用 1.1 将本地GIF转为NSdata类型 NSData *tempdata = [NSData dataWithCont ...
- 前端开发--ajax
使用ajax,他是有两个模块的,一个是客户端,一个是服务端. 客户端负责发送数据,发送数据的方式有两种,一种是GET,另一种是POST. 服务端是用来接收,处理数据和发送请求的数据. 要想使用ajax ...
- wincache 与 zend guard 的冲突
ZendLoader.dll 与wincache.dll 同时开启 问题分析:zend与wincache冲突 解决方法: 关掉wincache: 在php.ini中的 extension=php_w ...
- rabbitMQ安装docker版 /权限管理命令
1.进入docker hub镜像仓库地址:https://hub.docker.com/ 2.搜素rabbitMQ 查询镜像,可以看到多种类型,选择带有web页面的(managment) 3.拉取镜像 ...
- 突然地心血来潮,为 MaixPy( k210 micropython ) 添加看门狗(WDT) C 模块的开发过程记录,给后来的人做开发参考。
事情是前几天群里有人说做个看门狗不难吧,5分钟的事情,然后我就怼了几句,后来才发现,原来真的没有看门狗模块鸭. 那好吧,那我就写一下好了,今天是(2020年4月30日)想着最后一天了,不如做点什么有价 ...