using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace HighWayIot.Common { /// /// 通用工具类 /// public class GeneralUtils { /// /// 获取枚举类值的description元数据(没有Des返回名字) /// /// public static string GetEnumStringDescription(Enum enumValue) { string value = enumValue.ToString(); FieldInfo field = enumValue.GetType().GetField(value); object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); //获取描述属性 if (objs.Length == 0) //当描述属性没有时,直接返回名称 return value; DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0]; return descriptionAttribute.Description; } /// /// 获取枚举类的键值对 /// /// /// public static IEnumerable> GetEnumKeyValuePairs() where T : Enum { var enumType = typeof(T); var fields = enumType.GetFields(); foreach (var fi in fields) { if (fi.FieldType != enumType || !fi.IsLiteral) continue; var name = fi.Name; var value = (int)enumType.GetField(name).GetValue(null); yield return new KeyValuePair(name, value); } } } }