Extension.Enum.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Reflection;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. //using Newtonsoft.Json;
  9. namespace Infrastructure.Extensions
  10. {
  11. public static partial class Extensions
  12. {
  13. #region 枚举成员转成dictionary类型
  14. /// <summary>
  15. /// 转成dictionary类型
  16. /// </summary>
  17. /// <param name="enumType"></param>
  18. /// <returns></returns>
  19. public static Dictionary<int, string> EnumToDictionary(this Type enumType)
  20. {
  21. Dictionary<int, string> dictionary = new Dictionary<int, string>();
  22. Type typeDescription = typeof(DescriptionAttribute);
  23. FieldInfo[] fields = enumType.GetFields();
  24. int sValue = 0;
  25. string sText = string.Empty;
  26. foreach (FieldInfo field in fields)
  27. {
  28. if (field.FieldType.IsEnum)
  29. {
  30. sValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null));
  31. object[] arr = field.GetCustomAttributes(typeDescription, true);
  32. if (arr.Length > 0)
  33. {
  34. DescriptionAttribute da = (DescriptionAttribute)arr[0];
  35. sText = da.Description;
  36. }
  37. else
  38. {
  39. sText = field.Name;
  40. }
  41. dictionary.Add(sValue, sText);
  42. }
  43. }
  44. return dictionary;
  45. }
  46. /// <summary>
  47. /// 枚举成员转成键值对Json字符串
  48. /// </summary>
  49. /// <param name="enumType"></param>
  50. /// <returns></returns>
  51. //public static string EnumToDictionaryString(this Type enumType)
  52. //{
  53. // List<KeyValuePair<int, string>> dictionaryList = EnumToDictionary(enumType).ToList();
  54. // var sJson = JsonConvert.SerializeObject(dictionaryList);
  55. // return sJson;
  56. //}
  57. #endregion
  58. #region 获取枚举的描述
  59. /// <summary>
  60. /// 获取枚举值对应的描述
  61. /// </summary>
  62. /// <param name="enumType"></param>
  63. /// <returns></returns>
  64. public static string GetDescription(this System.Enum enumType)
  65. {
  66. FieldInfo EnumInfo = enumType.GetType().GetField(enumType.ToString());
  67. if (EnumInfo != null)
  68. {
  69. DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])EnumInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
  70. if (EnumAttributes.Length > 0)
  71. {
  72. return EnumAttributes[0].Description;
  73. }
  74. }
  75. return enumType.ToString();
  76. }
  77. #endregion
  78. #region 根据值获取枚举的描述
  79. public static string GetDescriptionByEnum<T>(this object obj)
  80. {
  81. var tEnum = System.Enum.Parse(typeof(T), obj.ParseToString()) as System.Enum;
  82. var description = tEnum.GetDescription();
  83. return description;
  84. }
  85. #endregion
  86. }
  87. }