You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

152 lines
7.5 KiB

using System.ComponentModel;
using Znyc.CloudCar.Model.ViewModels.Enum;
namespace Znyc.CloudCar.Utility.Helper
{
public class EnumHelper
{
public static List<EnumEntity> EnumToList<T>()
{
List<EnumEntity> list = new List<EnumEntity>();
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;
}
/// <summary>
/// 根据枚举值来获取单个枚举实体
/// </summary>
/// <typeparam name="T">枚举</typeparam>
/// <param name="value">value</param>
/// <returns></returns>
public static EnumEntity GetEnumberEntity<T>(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 引用。
}
/// <summary>
/// 根据枚举值value来获取单个枚举实体的文字描述内容
/// </summary>
/// <typeparam name="T">枚举</typeparam>
/// <param name="value">value</param>
/// <returns></returns>
public static string GetEnumDescriptionByValue<T>(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 "";
}
/// <summary>
/// 根据枚举key来获取单个枚举实体的文字描述内容
/// </summary>
/// <typeparam name="T">枚举</typeparam>
/// <param name="key">value</param>
/// <returns></returns>
public static string GetEnumDescriptionByKey<T>(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 "";
}
}
}