zoukankan      html  css  js  c++  java
  • C# EnumHelper Enum的值,Description,ToString()的相互转换

    首先定义枚举类型,如下:

    /// <summary>
    /// 板块
    /// </summary>
    public enum Plate
    {
            [Description("所有市场")]
            All = 0,
            [Description("沪深300")]
            HS300 = 1,
            [Description("创业板")]
            CYB = 2,
            [Description("上证50")]
            SZ50 = 3,
            [Description("中小板")]
            ZXB = 4,
            [Description("中证500")]
            ZZ500 = 5,
            [Description("包括指数")]
            BKZS = 6,
     }

    接下来是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 = 1, 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

  • 相关阅读:
    Java Web-session介绍
    Java异常-一般异常和运行时异常的区别
    Spring控制Hibernate的缓存机制ehcache
    Hibernate-缓存
    Hibernate-入门教程
    Java算法-hash算法
    Java算法-各种题目总结
    Java算法-堆排序
    Java算法-快速排序
    Java算法-归并排序
  • 原文地址:https://www.cnblogs.com/mq0036/p/10585174.html
Copyright © 2011-2022 走看看