using System.ComponentModel;
|
|
namespace CmsQueryExtensions
|
{
|
/// <summary>
|
/// 枚举帮助类.
|
/// </summary>
|
public static class EnumHelper
|
{
|
/// <summary>
|
/// 获取枚举.
|
/// </summary>
|
/// <param name="enumName"> </param>
|
/// <returns></returns>
|
/// <exception cref="ArgumentException"></exception>
|
public static List<EnumItem> GetEnumItems(string enumName)
|
{
|
// 获取当前程序集中的所有类型
|
var enumType = AppDomain.CurrentDomain.GetAssemblies()
|
.SelectMany(a => a.GetTypes())
|
.FirstOrDefault(t => t.Name == enumName && t.IsEnum);
|
|
if (enumType == null)
|
{
|
throw new Exception($"枚举类型 {enumName} 不存在");
|
}
|
|
return GetEnumItems(enumType);
|
}
|
|
/// <summary>
|
/// 获取枚举类型.
|
/// </summary>
|
/// <param name="enumType"></param>
|
/// <returns></returns>
|
/// <exception cref="ArgumentException"></exception>
|
public static List<EnumItem> GetEnumItems(Type enumType)
|
{
|
if (!enumType.IsEnum)
|
{
|
throw new Exception("提供的类型不是枚举类型");
|
}
|
|
var result = new List<EnumItem>();
|
var values = Enum.GetValues(enumType);
|
|
foreach (var value in values)
|
{
|
var fieldInfo = enumType.GetField(value.ToString());
|
var description = fieldInfo?
|
.GetCustomAttributes(typeof(DescriptionAttribute), false)
|
.FirstOrDefault() as DescriptionAttribute;
|
|
result.Add(new EnumItem
|
{
|
Value = (int)value,
|
Name = value.ToString(),
|
Description = description?.Description ?? value.ToString(),
|
});
|
}
|
|
return result;
|
}
|
}
|
|
/// <summary>
|
/// 枚举描述.
|
/// </summary>
|
public class EnumItem
|
{
|
public int Value { get; set; }
|
|
public string Name { get; set; }
|
|
public string Description { get; set; }
|
}
|
}
|