C# 枚举操作工具类

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using System.ComponentModel;using System.Collections;using System.Collections.Specialized;namespace JianKunKing.Common.EnumClass{    ///     /// 枚举操作类    ///     public static class EnumOperation    {        #region 从枚举中获取Description        ///         /// 从枚举中获取Description        ///         /// 需要获取枚举描述的枚举        /// 描述内容        public static string GetDescription(Enum enumName)        {            try            {                string _description = string.Empty;                FieldInfo _fieldInfo = enumName.GetType().GetField(enumName.ToString());                DescriptionAttribute[] _attributes = GetDescriptAttr(_fieldInfo);                if (_attributes != null && _attributes.Length > 0)                {                    _description = _attributes[0].Description;                }                else                {                    _description = enumName.ToString();                }                return _description;            }            catch (Exception)            {                throw;            }        }        #endregion        #region 获取字段Description(private)        ///         /// 获取字段Description        ///         /// FieldInfo        /// DescriptionAttribute[]         private static DescriptionAttribute[] GetDescriptAttr(this FieldInfo fieldInfo)        {            try            {                if (fieldInfo != null)                {                    return (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);                }                return null;            }            catch (Exception)            {                throw;            }        }        #endregion        #region 根据Description获取枚举定义字符串        ///         /// 根据Description获取枚举定义字符串        ///         /// 枚举类型        /// 枚举描述        /// 枚举        public static T GetEnumName(string description)        {            Type _type = typeof(T);            foreach (FieldInfo field in _type.GetFields())            {                DescriptionAttribute[] _curDesc = field.GetDescriptAttr();                if (_curDesc != null && _curDesc.Length > 0)                {                    if (_curDesc[0].Description == description)                    {                        return (T)field.GetValue(null);                    }                }                else                {                    if (field.Name == description)                    {                        return (T)field.GetValue(null);                    }                }            }            throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.", description), "Description");        }        #endregion        #region 将枚举转换为ArrayList        ///         /// 将枚举转换为ArrayList        /// 说明:        /// 若不是枚举类型,则返回NULL        ///         /// 枚举类型        /// ArrayList        public static ArrayList ToArrayList(Type type)        {            try            {                if (type.IsEnum)                {                    ArrayList _array = new ArrayList();                    Array _enumValues = Enum.GetValues(type);                    foreach (Enum value in _enumValues)                    {                        _array.Add(new KeyValuePair(value, GetDescription(value)));                    }                    return _array;                }                return null;            }            catch (Exception)            {                throw;            }        }        #endregion        #region 根据枚举值得到属性Description中的描述, 如果没有定义此属性则返回空串        ///           /// 根据枚举值得到属性Description中的描述, 如果没有定义此属性则返回空串          ///           ///           ///           ///           public static String GetEnumDescriptionString(int value, Type enumType)        {            try            {                NameValueCollection nvc = GetNVCFromEnumValue(enumType);                return nvc[value.ToString()];            }            catch (Exception)            {                throw;            }        }        #endregion        #region 根据枚举类型得到其所有的值 与 枚举定义Description属性 的集合        ///           /// 根据枚举类型得到其所有的 值 与 枚举定义Description属性 的集合          ///           ///           ///           public static NameValueCollection GetNVCFromEnumValue(Type enumType)        {            try            {                NameValueCollection nvc = new NameValueCollection();                Type typeDescription = typeof(DescriptionAttribute);                System.Reflection.FieldInfo[] fields = enumType.GetFields();                string strText = string.Empty;                string strValue = string.Empty;                foreach (FieldInfo field in fields)                {                    if (field.FieldType.IsEnum)                    {                        strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();                        object[] arr = field.GetCustomAttributes(typeDescription, true);                        if (arr.Length > 0)                        {                            DescriptionAttribute aa = (DescriptionAttribute)arr[0];                            strText = aa.Description;                        }                        else                        {                            strText = "";                        }                        nvc.Add(strValue, strText);                    }                }                return nvc;            }            catch (Exception)            {                throw;            }        }        #endregion        #region 根据枚举值得到相应的枚举定义字符串        ///           ///根据枚举值得到相应的枚举定义字符串          ///           ///           ///           ///           public static String GetEnumString(int value, Type enumType)        {            try            {                NameValueCollection nvc = GetEnumStringFromEnumValue(enumType);                return nvc[value.ToString()];            }            catch (Exception)            {                throw;            }        }        #endregion        #region 根据枚举类型得到其所有的 值 与 枚举定义字符串 的集合        ///           /// 根据枚举类型得到其所有的 值 与 枚举定义字符串 的集合          ///           ///           ///           public static NameValueCollection GetEnumStringFromEnumValue(Type enumType)        {            try            {                NameValueCollection nvc = new NameValueCollection();                Type typeDescription = typeof(DescriptionAttribute);                System.Reflection.FieldInfo[] fields = enumType.GetFields();                string strText = string.Empty;                string strValue = string.Empty;                foreach (FieldInfo field in fields)                {                    if (field.FieldType.IsEnum)                    {                        strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();                        nvc.Add(strValue, field.Name);                    }                }                return nvc;            }            catch (Exception)            {                throw;            }        }        #endregion    }}

如果知道枚举的编号就是那个int类型的数字,获取name直接强转就可以 (枚举类型)(int值)

小注:
       对于基础公共方法类来说,其中最好不是获取异常直接抛出,切记不要吞掉或者只抛出部分信息。

 以上就是C#  枚举操作工具类的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 06:28:13
下一篇 2025年12月13日 10:53:17

相关推荐

  • C# 如何识别一个字符串是否Json格式

    c# 如何识别一个字符串是否json格式 : using System;using System.Collections.Generic;using System.Text;namespace CYQ.Data.Tool{ /// /// 分隔Json字符串为字典集合。 /// internal c…

    好文分享 2025年12月17日
    000
  • C# 将 Json 解析成 DateTable

    c# 将 json 解析成 datetable  #region 将 Json 解析成 DateTable /// /// 将 Json 解析成 DateTable。 /// Json 数据格式如: /// {table:[{column1:1,column2:2,column3:3},{colum…

    2025年12月17日
    000
  • C# Excel数据验重及Table数据验重

    最近在做导入excel数据的时候,要检验数据是否重复:        1、要检验excel数据本身是否有重复?         2、Excel中的数据是否与数据库中的数据重复? 一、检验Excel中数据是否重复的方式有:        1、将Table中的数据使用select语句来过滤(此处略,可以…

    好文分享 2025年12月17日
    000
  • C# 读取Excel中的数据

    c# 读取excel中的数据 #region 读取Excel中的数据 /// /// 读取Excel中的数据 /// /// Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls /// Excel中的数据 private DataTable GetTable(st…

    好文分享 2025年12月17日
    000
  • C# 获取Excel工作薄中Sheet页(工作表)名集合

    c#  获取excel工作薄中sheet页(工作表)名集合 #region 获取Excel工作薄中Sheet页(工作表)名集合 /// /// 获取Excel工作薄中Sheet页(工作表)名集合 /// /// Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls …

    好文分享 2025年12月17日
    000
  • C# Timer 定时器应用

            关于c#中timer类 在c#里关于定时器类就有3个:        1.定义在system.windows.forms里        2.定义在system.threading.timer类里        3.定义在system.timers.timer类里        sy…

    2025年12月17日
    000
  • C# 动态加载Dll

    1、新建测试dll及方法,用vs2010新建winform程序,具体代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawi…

    好文分享 2025年12月17日
    000
  • C# 实体类序列化与反序列化一 (XmlSerializer)

    /// /// 实体类序列化的反序列化的类 /// /// public abstract class EntityClassXmlSerializer { /// /// 实体类序列化成xml string /// /// /// public static string ToXMLString(…

    好文分享 2025年12月17日
    000
  • C# Json 序列化与反序列化一

    public class JsonSerializer { /// /// json序列化 /// /// /// /// public static string JsonStringSerializer(T t) { DataContractJsonSerializer ser = new Da…

    好文分享 2025年12月17日
    000
  • C# 容器上控件排序

    public static class Sort { #region 设置PanelControl上按钮显示位置 /// /// 设置按钮显示位置 /// /// 需要调整按钮顺序的Panel /// 按钮间隔 public static void SetButtonCenter(Scrollabl…

    好文分享 2025年12月17日
    000
  • C# 移除数组中重复数据

    #region 移除数组中重复数据 /// /// 移除数组中重复数据 /// /// 需要除重的数组 /// 不重复数组 public static string[] DelRepeatData(string[] array) { return array.GroupBy(p => p).S…

    好文分享 2025年12月17日
    000
  • C# 字符串中多个连续空格转为一个空格

    #region 字符串中多个连续空格转为一个空格 /// /// 字符串中多个连续空格转为一个空格 /// /// 待处理的字符串 /// 合并空格后的字符串 public static string MergeSpace(string str) { if (str != string.Empty …

    好文分享 2025年12月17日
    000
  • C# 多态性

    转载自:MSDN 类似文章:点击打开链接  Polymorphism(多态性)是一个希腊词,指“多种形态”,多态性具有两个截然不同的方面:  发生此情况时,该对象的声明类型不再与运行时类型相同。  在运行时,客户端代码调用该方法,CLR 查找对象的运行时类型,并调用虚方法的重写方法。 因此,你可以在…

    2025年12月17日
    000
  • C# 自定义 implicit和explicit转换

    explicit 和 implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换explicti 表示显式转换,如从 a -> b 必须进行强制类型转换(b = (b)a)implicit 表示隐式转换,如从 b -> a 只需直接赋值(a = b) 隐式转换可以让我…

    2025年12月17日
    000
  • C# 多线程参数传递

    1、通过实体类来传递(可以传递多个参数与获取返回值),demo如下: 需要在线程中调用的函数: namespace ThreadParameterDemo{ public class FunctionClass { public static string TestFunction(string n…

    2025年12月17日
    000
  • C# 下载带进度条代码(普通进度条)

    /// /// 下载带进度条代码(普通进度条) /// /// 网址 /// 下载后文件名为 /// 报告进度的处理(第一个参数:总大小,第二个参数:当前进度) /// True/False是否下载成功 public static bool DownLoadFile(string URL, stri…

    2025年12月17日 好文分享
    000
  • C# 可以利用反射给只读属性赋值吗?

    结论:可以 验证demo如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;usi…

    2025年12月17日 好文分享
    000
  • C# 接口作用的深入理解

    原文地址:http://www.php.cn/ 假设我们公司有两种程序员:VB程序员,指的是用VB写程序的程序员,用clsVBProgramer这个类表示;Delphi程序员指的是用Delphi写程序的程序员,用clsDelphiProgramer这个类来表示。每个类都有一个WriteCode()方…

    好文分享 2025年12月17日
    000
  • C# 对象比较(值类型、引用类型)

    #region 引用对象比较 /// /// 引用对象比较 /// /// /// /// public static bool CompareObject(object objA, object objB) { bool flag = false; if (objA == null || objB…

    好文分享 2025年12月17日
    000
  • C# datatable中重复数据去重

    #region datatable去重 /// /// datatable去重 /// /// 需要去重的datatable /// 依据哪些列去重 /// public static DataTable GetDistinctTable(DataTable dtSource, params str…

    好文分享 2025年12月17日
    000

发表回复

登录后才能评论
关注微信