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
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 "";
|
|
}
|
|
|
|
}
|
|
}
|
|
|