public static class EnumExtensions
{
/// <summary>
/// 获取Enum描述
/// </summary>
/// <param name="e">Enum实例</param>
/// <returns>Enum描述</returns>
public static string GetDescription(this Enum e)
{
return e.GetType().GetField(e.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute), false)
.Select(a => a as DescriptionAttribute)
.FirstOrDefault()?.Description
?? e.ToString();
}
/// <summary>
/// 获取Enum值和描述列表
/// </summary>
public static Dictionary<int, string> GetValuesAndDescriptions(Type type)
{
return type.GetFields().Where(f => f.IsStatic).ToDictionary(
f => (int)Enum.Parse(type, f.Name),
f => (f.GetCustomAttribute(typeof(DescriptionAttribute)) as DescriptionAttribute).Description
);
}
/// <summary>
/// 获取Enum名称和描述列表
/// </summary>
public static Dictionary<string, string> GetNamesAndDescriptions(Type type)
{
return type.GetFields().Where(f => f.IsStatic).ToDictionary(
f => f.Name,
f => (f.GetCustomAttribute(typeof(DescriptionAttribute)) as DescriptionAttribute).Description
);
}
/// <summary>
/// 获取Enum名称和值列表
/// </summary>
public static Dictionary<string, int> GetNamesAndValues(Type type)
{
return type.GetFields().Where(f => f.IsStatic).ToDictionary(
f => f.Name,
f => (int)Enum.Parse(type, f.Name)
);
}
/// <summary>
/// 获取Enum描述列表
/// </summary>
public static List<string> GetDescriptions(Type type)
{
return type.GetFields()
.Select(p => p.GetCustomAttribute(typeof(DescriptionAttribute)))
.Select(p => p as DescriptionAttribute)
.Where(p => p != null)
.Select(p => p.Description)
.ToList();
}
}
C# Enum扩展
最新推荐文章于 2024-08-08 16:48:06 发布