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; } }