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月17日 06:28:28

相关推荐

发表回复

登录后才能评论
关注微信