EnumUtils.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace JiaZhiQuan.Common.Utils {
  5. public class EnumUtils {
  6. /// <summary>
  7. /// 根据指定的输入枚举类型,对字符串进行解析,大小写敏感可指定(默认不敏感)。
  8. /// 如果转换失败,则返回默认值,如果不是枚举型,则扔出异常。
  9. /// 用法示例:WorkdayType wt = ParseEnum<WorkdayType >("workday");
  10. /// </summary>
  11. /// <typeparam name="T">数据类型。必需为枚举型,如果不是则扔出异常。</typeparam>
  12. /// <param name="value">输入字符串。</param>
  13. /// <param name="caseSensitive">是否大小写敏感,默认值为false。</param>
  14. /// <returns></returns>
  15. public static T ParseEnum<T>(string value, bool caseSensitive = false) where T : Enum {
  16. T t = default;
  17. try {
  18. foreach (T item in Enum.GetValues(typeof(T))) {
  19. bool b1 = item.ToString() == value; // 大小写敏感
  20. bool b2 = item.ToString().ToLower() == value.ToLower(); // 大小写不敏感
  21. if (caseSensitive ? b1 : b2) {
  22. t = item;
  23. break;
  24. }
  25. }
  26. t = (T)Enum.Parse(typeof(T), value);
  27. } catch { }
  28. return t;
  29. }
  30. }
  31. }