using System.Collections.Concurrent;
using System.Reflection;
namespace Easy.Core;
public static class EnumExtension
{
///
/// 缓存
///
private static readonly ConcurrentDictionary EnumDic = new();
///
/// 获取枚举上定义的Description
///
///
///
public static string Description(this Enum value)
{
Type type = value.GetType();
string vs = value.ToString(), key = $"{type.FullName}_{vs}";
if (EnumDic.TryGetValue(key, out var description))
{
return description;
}
FieldInfo fieldInfo = type.GetField(vs);
if (fieldInfo != null && fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() is DescriptionAttribute descriptionAttribute)
{
string desc = descriptionAttribute.Description;
EnumDic.TryAdd(key, desc);
return desc;
}
return string.Empty;
}
}