• 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;
            }
        }
  • 相关阅读:
    设置表单输入框中的提示信息
    动感图文轮显
    jquery插件之图片轮显(一)整理2011.02.24
    用sort()方法对数组的元素进行排序(可按字母升序降序与获得最大最小值)
    jquery插件之图片轮显(一)
    jquery插件之图片show and hide(一)
    Pdftk The PDF Toolkit
    error while loading shared libraries: libxcbaux.so.0: cannot open shared object file
    害人的RestoreDirectory
    Oracle CASE WHEN 用法介绍
  • 原文地址:https://www.cnblogs.com/burg-xun/p/7091040.html
Copyright © 2020-2023  润新知