• 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;
            }
        }
  • 相关阅读:
    P1536 村村通 题解
    P1551 亲戚题解
    P1185 绘制二叉树 题解
    P3884 [JLOI2009]二叉树问题
    P1087 [NOIP2004 普及组] FBI 树
    P1305 新二叉树题解
    P1229 遍历问题
    P1030 [NOIP2001 普及组] 求先序排列题解
    P1827 [USACO3.4]美国血统 American Heritage 题解
    深度优先搜索dfs 讲解教程
  • 原文地址:https://www.cnblogs.com/burg-xun/p/7091040.html
Copyright © 2020-2023  润新知