Files
coreshoppro/CoreCms.Net.Utility/Helper/EnumHelper.cs
2021-12-20 21:27:32 +08:00

123 lines
4.1 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using CoreCms.Net.Model.ViewModels.UI;
namespace CoreCms.Net.Utility.Helper
{
public class EnumHelper
{
/// <summary>
/// 将枚举转成List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static List<EnumEntity> EnumToList<T>()
{
List<EnumEntity> list = new List<EnumEntity>();
foreach (var e in Enum.GetValues(typeof(T)))
{
EnumEntity m = new EnumEntity();
object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
if (objArr != null && objArr.Length > 0)
{
DescriptionAttribute da = objArr[0] as DescriptionAttribute;
m.description = da.Description;
}
m.value = Convert.ToInt32(e);
m.title = e.ToString();
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();
object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
if (objArr != null && objArr.Length > 0)
{
DescriptionAttribute da = objArr[0] as DescriptionAttribute;
m.description = da.Description;
}
m.value = Convert.ToInt32(e);
m.title = e.ToString();
if (value == m.value)
{
return m;
}
}
return 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();
object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
if (objArr != null && objArr.Length > 0)
{
DescriptionAttribute da = objArr[0] as DescriptionAttribute;
m.description = da.Description;
}
m.value = Convert.ToInt32(e);
m.title = e.ToString();
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();
object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
if (objArr != null && objArr.Length > 0)
{
DescriptionAttribute da = objArr[0] as DescriptionAttribute;
m.description = da.Description;
}
m.value = Convert.ToInt32(e);
m.title = e.ToString();
if (key == m.title)
{
return m.description;
}
}
return "";
}
}
}