zoukankan      html  css  js  c++  java
  • 枚举类型取值helper类

     枚举类型取值:

    1、根据枚举下标拿取值(默认为 0,1,2,3,4)

    2、根据枚举描述拿到枚举值

    3、根据枚举下标拿到枚举值(不限下标,如101开头)

    调用方法

    调用1:Enum.GetNames(typeof(AddAttributeType))[0];   //注:这个适用于枚举下标为默认0开始的,拿到的值为string类型的枚举值(如果下标超出会报异常)

    调用 2:EnumMethodHelper.EnumToDescription("101", typeof(AddAttributeType));   //注:这个是根据描述拿 到string类型的枚举值(没找到返回空)

    调用3:EnumMethodHelper.ToEnumString(101, typeof(AddAttributeType));  //注:这个101为下标,可以把下标0,1,2,3换成101,102,103,等,然后根据101,102这个下标取值(没找到返回null)

    枚举类

    /// <summary>
        /// 会员附加属性类型设置——附加属性分类
        /// </summary>
        public enum AddAttributeType
        {
            [Description("101")]
            电话 = 0,
            [Description("102")]
            联系地址 = 1,
            [Description("103")]
            车牌号 = 2,
            [Description("104")]
            纪念日 = 3,
            [Description("200")]
            附加属性 = 4
        }
    View Code

    枚举helper类

    using System;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.ComponentModel;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Bestech.CRM.Portal.Common
    {
        /// <summary>  
        /// Author: lixb  
        /// Date: 2018年5月24日
        /// Description: 枚举辅助类  
        /// </summary>  
        public static class EnumMethodHelper
        {
            /// <summary>
            /// 根据枚举描述拿到string类型的枚举值  显示用
            /// </summary>
            /// <param name="enumstr"></param>
            /// <param name="enumType"></param>
            /// <returns></returns>
            public static string EnumToDescription(string enumstr, Type enumType)
            {
                Type typeDescription = typeof(DescriptionAttribute);
                //拿到所有的集合
                FieldInfo[] fields = enumType.GetFields();
                string strText = string.Empty;
                //循环枚举集合
                foreach (FieldInfo field in fields)
                {
                    if (field.FieldType.IsEnum)
                    {
                        object[] arr = field.GetCustomAttributes(typeDescription, true);
                        if (arr.Length > 0)
                        {
                            DescriptionAttribute aa = (DescriptionAttribute)arr[0];
                            strText = aa.Description;
                            if (strText == enumstr)
                            {
                                return field.Name;
                            }
                        }
                    }
                }
                return "";
            }
    
            /// <summary>  
            /// 扩展方法:根据枚举值得到相应的枚举定义字符串  (根据下标)
            /// </summary>  
            /// <param name="value"></param>  
            /// <param name="enumType"></param>  
            /// <returns></returns>  
            public static String ToEnumString(this int value, Type enumType)
            {
                NameValueCollection nvc = GetEnumStringFromEnumValue(enumType);
                return nvc[value.ToString()];
            }
    
            /// <summary>  
            /// 根据枚举类型得到其所有的 值 与 枚举定义字符串 的集合  
            /// </summary>  
            /// <param name="enumType"></param>  
            /// <returns></returns>  
            public static NameValueCollection GetEnumStringFromEnumValue(Type enumType)
            {
                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;
            }
        }
    }
    View Code
  • 相关阅读:
    Python的注释
    Python的优缺点
    pymysql模块
    python(pymysql操作数据库)
    面向对象的测试用例设计有几种方法?如何实现?
    请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
    什么是兼容性测试?请举例说明如何利用兼容性测试列表进行测试。
    当开发人员说不是BUG时,你如何应付?
    性能测试的流程?
    您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
  • 原文地址:https://www.cnblogs.com/MycnBlogs7854/p/9087563.html
Copyright © 2011-2022 走看看