using System.ComponentModel; using Znyc.CloudCar.Model.ViewModels.Enum; namespace Znyc.CloudCar.Utility.Helper { public class EnumHelper { public static List EnumToList() { List list = new List(); foreach (var e in Enum.GetValues(typeof(T))) { EnumEntity m = new EnumEntity(); #pragma warning disable CS8604 // “FieldInfo? Type.GetField(string name)”中的形参“name”可能传入 null 引用实参。 #pragma warning disable CS8602 // 解引用可能出现空引用。 object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true); #pragma warning restore CS8602 // 解引用可能出现空引用。 #pragma warning restore CS8604 // “FieldInfo? Type.GetField(string name)”中的形参“name”可能传入 null 引用实参。 if (objArr != null && objArr.Length > 0) { #pragma warning disable CS8600 // 将 null 文本或可能的 null 值转换为不可为 null 类型。 DescriptionAttribute da = objArr[0] as DescriptionAttribute; #pragma warning restore CS8600 // 将 null 文本或可能的 null 值转换为不可为 null 类型。 #pragma warning disable CS8602 // 解引用可能出现空引用。 m.description = da.Description; #pragma warning restore CS8602 // 解引用可能出现空引用。 } m.value = Convert.ToInt32(e); #pragma warning disable CS8601 // 可能的 null 引用赋值。 m.title = e.ToString(); #pragma warning restore CS8601 // 可能的 null 引用赋值。 list.Add(m); } return list; } /// /// 根据枚举值来获取单个枚举实体 /// /// 枚举 /// value /// public static EnumEntity GetEnumberEntity(int value) { foreach (var e in Enum.GetValues(typeof(T))) { EnumEntity m = new EnumEntity(); #pragma warning disable CS8604 // “FieldInfo? Type.GetField(string name)”中的形参“name”可能传入 null 引用实参。 #pragma warning disable CS8602 // 解引用可能出现空引用。 object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true); #pragma warning restore CS8602 // 解引用可能出现空引用。 #pragma warning restore CS8604 // “FieldInfo? Type.GetField(string name)”中的形参“name”可能传入 null 引用实参。 if (objArr != null && objArr.Length > 0) { #pragma warning disable CS8600 // 将 null 文本或可能的 null 值转换为不可为 null 类型。 DescriptionAttribute da = objArr[0] as DescriptionAttribute; #pragma warning restore CS8600 // 将 null 文本或可能的 null 值转换为不可为 null 类型。 #pragma warning disable CS8602 // 解引用可能出现空引用。 m.description = da.Description; #pragma warning restore CS8602 // 解引用可能出现空引用。 } m.value = Convert.ToInt32(e); #pragma warning disable CS8601 // 可能的 null 引用赋值。 m.title = e.ToString(); #pragma warning restore CS8601 // 可能的 null 引用赋值。 if (value == m.value) { return m; } } #pragma warning disable CS8603 // 可能返回 null 引用。 return null; #pragma warning restore CS8603 // 可能返回 null 引用。 } /// /// 根据枚举值value来获取单个枚举实体的文字描述内容 /// /// 枚举 /// value /// public static string GetEnumDescriptionByValue(int value) { foreach (var e in Enum.GetValues(typeof(T))) { EnumEntity m = new EnumEntity(); #pragma warning disable CS8604 // “FieldInfo? Type.GetField(string name)”中的形参“name”可能传入 null 引用实参。 #pragma warning disable CS8602 // 解引用可能出现空引用。 object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true); #pragma warning restore CS8602 // 解引用可能出现空引用。 #pragma warning restore CS8604 // “FieldInfo? Type.GetField(string name)”中的形参“name”可能传入 null 引用实参。 if (objArr != null && objArr.Length > 0) { #pragma warning disable CS8600 // 将 null 文本或可能的 null 值转换为不可为 null 类型。 DescriptionAttribute da = objArr[0] as DescriptionAttribute; #pragma warning restore CS8600 // 将 null 文本或可能的 null 值转换为不可为 null 类型。 #pragma warning disable CS8602 // 解引用可能出现空引用。 m.description = da.Description; #pragma warning restore CS8602 // 解引用可能出现空引用。 } m.value = Convert.ToInt32(e); #pragma warning disable CS8601 // 可能的 null 引用赋值。 m.title = e.ToString(); #pragma warning restore CS8601 // 可能的 null 引用赋值。 if (value == m.value) { return m.description; } } return ""; } /// /// 根据枚举key来获取单个枚举实体的文字描述内容 /// /// 枚举 /// value /// public static string GetEnumDescriptionByKey(string key) { foreach (var e in Enum.GetValues(typeof(T))) { EnumEntity m = new EnumEntity(); #pragma warning disable CS8602 // 解引用可能出现空引用。 #pragma warning disable CS8604 // “FieldInfo? Type.GetField(string name)”中的形参“name”可能传入 null 引用实参。 object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true); #pragma warning restore CS8604 // “FieldInfo? Type.GetField(string name)”中的形参“name”可能传入 null 引用实参。 #pragma warning restore CS8602 // 解引用可能出现空引用。 if (objArr != null && objArr.Length > 0) { #pragma warning disable CS8600 // 将 null 文本或可能的 null 值转换为不可为 null 类型。 DescriptionAttribute da = objArr[0] as DescriptionAttribute; #pragma warning restore CS8600 // 将 null 文本或可能的 null 值转换为不可为 null 类型。 #pragma warning disable CS8602 // 解引用可能出现空引用。 m.description = da.Description; #pragma warning restore CS8602 // 解引用可能出现空引用。 } m.value = Convert.ToInt32(e); #pragma warning disable CS8601 // 可能的 null 引用赋值。 m.title = e.ToString(); #pragma warning restore CS8601 // 可能的 null 引用赋值。 if (key == m.title) { return m.description; } } return ""; } } }