枚举类型取值helper类
Posted mycnblogs7854
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举类型取值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 }
枚举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; } } }
以上是关于枚举类型取值helper类的主要内容,如果未能解决你的问题,请参考以下文章