核心关键代码:
/// <summary>
/// 获取枚举
/// </summary>
/// <param name="Name"> 枚举名称 </param>
/// <returns> </returns>
public static List<EnumEitityDTO> GetGetEnumList(string Name)
{
Type s = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).Where(u => u.Name == Name).FirstOrDefault();
if (s.IsNullOrEmpty() || !s.IsEnum)
{
throw new Exception("非有效枚举!");
}
Array values = Enum.GetValues(s);
List<EnumEitityDTO> list = new List<EnumEitityDTO>();
foreach (object aValue in values)
{
list.Add(new EnumEitityDTO
{
Id = Convert.ToInt32(aValue),
Describe = s.GetDescription(aValue.ToString()),
EnumName = aValue.ToString()
});
}
return list;
}
IsNullOrEmpty是自定义的一个扩展方法,可以改成用string.IsNullOrEmpty()判断s是否是空的。代码如下:
/// <summary>
/// 判断是否为Null或者空
/// </summary>
/// <param name="obj"> 对象 </param>
/// <returns> </returns>
public static bool IsNullOrEmpty(this object obj)
{
if (obj == null)
{
return true;
}
else
{
return string.IsNullOrEmpty(obj.ToString());
}
}
Describe = s.GetDescription(aValue.ToString())也是自定义的扩展方法通过枚举英文获取枚举描述[Description("xxxx")],如下:
/// <summary>
/// 知道枚举,传入枚举英文,获取描述
/// </summary>
/// <param name="value"> </param>
/// <param name="Name"> </param>
/// <returns> </returns>
public static string GetDescription(this Type value, string Name)
{
DescriptionAttribute attribute = value.GetField(Name)
.GetCustomAttributes(typeof(DescriptionAttribute), false)
.SingleOrDefault() as DescriptionAttribute;
return attribute == null ? value.ToString() : attribute.Description;
}
EnumEitityDTO一个自定义的实体类