C# EnumHelper Enum的值,Description,ToString()的相互转换
首先定义枚举类型,如下:
/// <summary>
/// 板块
/// </summary>
public enum Plate
{
[Description("所有市场")]
All = ,
[Description("沪深300")]
HS300 = ,
[Description("创业板")]
CYB = ,
[Description("上证50")]
SZ50 = ,
[Description("中小板")]
ZXB = ,
[Description("中证500")]
ZZ500 = ,
[Description("包括指数")]
BKZS = ,
}
接下来是Helper类
public static class EnumHelper
{ /// <summary>
/// 获取枚举值的Description
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static string GetDescription<T>(this T value) where T : struct
{
string result = value.ToString();
Type type = typeof(T);
FieldInfo info = type.GetField(value.ToString());
var attributes = info.GetCustomAttributes(typeof(DescriptionAttribute), true);
if (attributes != null && attributes.FirstOrDefault() != null)
{
result = (attributes.First() as DescriptionAttribute).Description;
} return result;
} /// <summary>
/// 根据Description获取枚举值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static T GetValueByDescription<T>(this string description) where T : struct
{
Type type = typeof(T);
foreach (var field in type.GetFields())
{
if (field.Name == description)
{
return (T)field.GetValue(null);
} var attributes = (DescriptionAttribute[])field.GetCustomAttributes(typeof(DescriptionAttribute), true);
if (attributes != null && attributes.FirstOrDefault() != null)
{
if (attributes.First().Description == description)
{
return (T)field.GetValue(null);
}
}
} throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.", description), "Description");
} /// <summary>
/// 获取string获取枚举值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static T GetValue<T>(this string value) where T : struct
{
T result;
if (Enum.TryParse(value, true, out result))
{
return result;
} throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.", value), "Value");
}
}
再给个EnumHelper类吧:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.ComponentModel;
using System.Web; namespace Vector.Framework.Tool
{
/// <summary>
/// 程序说明:枚举类型操作类
/// 建立者 :spw
/// 建立日期:2018-04-25
/// </summary>
public class EnumHelper
{
/// <summary>
/// 通过枚举类型得到集合
/// </summary>
/// <param name="type">集合类型</param>
/// <param name="hasAll">是否包含请选择</param>
/// <returns></returns>
public static List<ListItem> GetListItemByEnum(Type type, bool hasAll=true)
{
List<ListItem> list = new List<ListItem>();
FieldInfo[] fields = type.GetFields();
if (hasAll)
{
list.Add(new ListItem() { Value = "-1", Text = "请选择" });
} for (int i = , count = fields.Length; i < count; i++)
{
list.Add(new ListItem() { Value = ((int)Enum.Parse(type, fields[i].Name)).ToString(), Text = fields[i].Name });
}
return list;
} #region 枚举,值,串的相互转化
/// <summary>
/// 枚举转字符串
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="t">枚举对象</param>
/// <returns></returns>
private static string Enum2Text<T>(T t)
{
//string enumStringOne = color.ToString(); //效率低,不推荐
//string enumStringTwo = Enum.GetName(typeof(Color), color);//推荐
return Enum.GetName(typeof(T), t);
} /// <summary>
/// 枚举转值
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="t">枚举对象</param>
/// <returns></returns>
private static int Enum2Value<T>(T t)
{
//int enumValueOne = t.GetHashCode();
//int enumValueTwo = (int)color;
//int enumValueThree = Convert.ToInt32(color);
return t.GetHashCode();
} /// <summary>
/// 字符串转枚举
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="text">字符串</param>
/// <returns></returns>
private static T String2Enum<T>(string text)
{
//Color enumOne = (Color)Enum.Parse(typeof(Color), colorString);
return (T)Enum.Parse(typeof(T), text);
} /// <summary>
/// 字符串转值
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="text">字符串</param>
/// <returns></returns>
public static int String2Value<T>(string text)
{
//int enumValueFour = (int)Enum.Parse(typeof(Color), colorString);
return (int)Enum.Parse(typeof(T), text);
} /// <summary>
/// 值转枚举
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="value">值</param>
/// <returns></returns>
private static T Value2Enum<T>(int value)
{
//Color enumTwo = (Color)colorValue;
//Color enumThree = (Color)Enum.ToObject(typeof(Color), colorValue);
return (T)Enum.ToObject(typeof(T), value);
} /// <summary>
/// 值转字符串
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="value">值</param>
/// <returns></returns>
public static string Value2Text<T>(int value)
{
//string enumStringThree = Enum.GetName(typeof(Color), colorValue);
return Enum.GetName(typeof(T), value);
}
#endregion
} public class ListItem
{
/// <summary>
/// 显示值
/// </summary>
public string Text { get; set; }
/// <summary>
/// 实际值
/// </summary>
public string Value { get; set; }
/// <summary>
/// 是否选中
/// </summary>
public bool Selected { get; set; }
}
}
出处:https://blog.csdn.net/u011400752/article/details/83818832
https://blog.csdn.net/spw55381155/article/details/80074326
C# EnumHelper Enum的值,Description,ToString()的相互转换的更多相关文章
- C# Enum Name String Description之间的相互转换
最近工作中经常用到Enum中Value.String.Description之间的相互转换,特此总结一下. 1.首先定义Enum对象 public enum Weekday { [Descriptio ...
- 获取Enum枚举值描述的几法方法
原文:获取Enum枚举值描述的几法方法 1.定义枚举时直接用中文 由于VS对中文支持的很不错,所以很多程序员都采用了此方案. 缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用 ...
- Enum 枚举值 (一) 获取描述信息
封装了方法: public static class EnumOperate { public class BaseDescriptionAttribute : DescriptionAttribut ...
- MVC3不能正确识别JSON中的Enum枚举值
一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...
- C#遍历枚举(Enum)值
foreach (object o in Enum.GetValues(typeof(EmpType))) { Console.WriteLine("{0}:{1}", o, En ...
- java enum 枚举值
public enum PieChartEnum { PIE00("pie00"), PIE10("pie10"), PIE11("pie11&quo ...
- 从一个int值显示相应枚举类型的名称或者描述
我正在做一个出入库管理的简单项目,在Models里定义了这样的枚举类型 public enum InOrOut { [Description("出库")] Out = , [Des ...
- Enum扩展及MVC中DropDownListFor扩展方法的使用
public enum SearchState { /// <summary> /// 全部 /// </summary> [Description("全部" ...
- C# 枚举类型 enum
我个人感觉平日用到的enum应该是非常简单的,无非就是枚举和整数.字符串之间的转换.最近工作发现一些同事居然不太会用这个东东,于是就整理一下. 枚举类型是定义了一组“符号名称/值”配对.枚举类型是强类 ...
随机推荐
- Windows挂载NFS共享盘
Centos7添加NFS方法请见如下链接: https://www.cnblogs.com/jackyzm/p/10285845.html 一:添加NFS服务 1.1:此电脑-右键-管理-window ...
- spring jpa 语法
摘自http://www.cnblogs.com/BenWong/p/3890012.html Table 2.3. Supported keywords inside method names Ke ...
- H5手指滑动切换卡片效果
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- 七月在线爬虫班学习笔记(六)——scrapy爬虫整体示例
第六课主要内容: 爬豆瓣文本例程 douban 图片例程 douban_imgs 1.爬豆瓣文本例程 douban 目录结构 douban --douban --spiders --__init__. ...
- Callable抛出异常与future.get
public class ThreadPoolTest { @Test public void testException(){ try{ testExecutorServiceException() ...
- sql嵌套查询
嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询.内层查询也称子查询,从查询. ...
- carthage和cocoapods
http://www.jianshu.com/p/b5607b8b9348 http://www.jianshu.com/p/5ccde5f22a17 1.在brew install carthage ...
- winform devexpress 用法汇总
废话不多说先上图 1.封装分页控件 qrcodeOnPage1.SearchData(gridControl2, IDataPage, sWhere, "", "tb_o ...
- SpringBoot四种读取properties文件的方式
环境:IDEA jdk1.8 SpringBoot2.1.4 例,如下默认application.properties文件 一.使用`@ConfigurationProperties`注解将配置文 ...
- Applets的分析
一.有关Java Applet的基础 1.JavaApplet就是用Java语言编写的小应用程序,可以直接嵌入到网页中,并能够产生特殊的效果.包含Applet的网页被称为Java-powered页,可 ...