| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | 
							- 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 OASystem.Domain.Enums
 
- {
 
-     public static class EnumHelper
 
-     {
 
-         //--extension
 
-         /// <summary>
 
-         /// 获取当前枚举描述
 
-         /// </summary>
 
-         /// <param name="enumValue"></param>
 
-         /// <returns></returns>
 
-         public static string GetEnumDescription(this Enum enumValue)
 
-         {
 
-             try
 
-             {
 
-                 Type type = enumValue.GetType();
 
-                 MemberInfo[] memInfo = type.GetMember(enumValue.ToString());
 
-                 if (null != memInfo && memInfo.Length > 0)
 
-                 {
 
-                     object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
 
-                     if (null != attrs && attrs.Length > 0)
 
-                         return ((DescriptionAttribute)attrs[0]).Description;
 
-                 }
 
-                 return enumValue.ToString();
 
-             }
 
-             catch (Exception)
 
-             {
 
-                 return "";
 
-             }
 
-         }
 
-         //根据值获取枚举方法
 
-         public static Enum GetEnumByValue(Type enumType, string value)
 
-         {
 
-             return Enum.Parse(enumType, value) as Enum;
 
-         }
 
-         /// <summary>
 
-         /// 根据Key获取枚举描述
 
-         /// </summary>
 
-         /// <param name="en"></param>
 
-         /// <returns></returns>
 
-         public static string GetDescription(this System.Enum en)
 
-         {
 
-             Type type = en.GetType();
 
-             MemberInfo[] memInfo = type.GetMember(en.ToString());
 
-             if (memInfo != null && memInfo.Length > 0)
 
-             {
 
-                 object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
 
-                 if (attrs != null && attrs.Length > 0)
 
-                     return ((DescriptionAttribute)attrs[0]).Description;
 
-             }
 
-             return en.ToString();
 
-         }
 
-         /// <summary>
 
-         /// 根据枚举类型得到其所有的 值 与 枚举定义Description属性 的集合
 
-         /// </summary>
 
-         /// <param name="enumType"></param>
 
-         /// <returns></returns>
 
-         public static NameValueCollection GetNVCFromEnumValue(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();
 
-                     strValue = (enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null) as int?)?.ToString() ?? string.Empty;
 
-                     object[] arr = field.GetCustomAttributes(typeDescription, true);
 
-                     if (arr.Length > 0)
 
-                     {
 
-                         DescriptionAttribute aa = (DescriptionAttribute)arr[0];
 
-                         strText = aa.Description;
 
-                     }
 
-                     else
 
-                     {
 
-                         strText = "";
 
-                     }
 
-                     nvc.Add(strValue, strText);
 
-                 }
 
-             }
 
-             return nvc;
 
-         }
 
-         /// <summary>
 
-         /// 获取枚举的所有值及其对应的描述
 
-         /// </summary>
 
-         /// <param name="enumType"></param>
 
-         /// <param name="enumKeys"></param>
 
-         /// <returns></returns>
 
-         public static Dictionary<string, string> GetEnumDescriptions(Type enumType, string[]? enumKeys = null)
 
-         {
 
-             var descriptions = new Dictionary<string, string>();
 
-             if (!enumType.IsEnum)
 
-             {
 
-                 return descriptions;
 
-                 //throw new ArgumentException("Type must be an enum", nameof(enumType));
 
-             }
 
-             foreach (var field in enumType.GetFields(BindingFlags.Static | BindingFlags.GetField | BindingFlags.Public))
 
-             {
 
-                 var descriptionAttribute = field.GetCustomAttribute<DescriptionAttribute>();
 
-                 var description = descriptionAttribute?.Description ?? field.Name;
 
-                 var name = field.Name;
 
-                 if (enumKeys != null && enumKeys.Any())
 
-                 {
 
-                     if (!enumKeys.Contains(name))
 
-                     {
 
-                         descriptions[name] = description;
 
-                     }
 
-                 }
 
-                 else {
 
-                     descriptions[name] = description;
 
-                 }
 
-             }
 
-             return descriptions;
 
-         }
 
-     }
 
- }
 
 
  |