using JiaZhiQuan.Common.Attributes; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace JiaZhiQuan.Common.Utils { /// /// 特性工具类 /// public static class AttributeUtils { /// /// 获取枚举字段的特性 /// /// /// public static T GetEnumDescription(System.Enum value) where T : Attribute { var type = value.GetType(); var name = System.Enum.GetName(type, value); if (name == null) return null; var field = type.GetField(name); if (field == null) return null; return Attribute.GetCustomAttribute(field, typeof(T)) as T; } /// /// 获取枚举字段的特性 /// /// 枚举 /// 特性 /// /// public static List FindEnumValues(Func func) where TEnum : System.Enum where TAttribute : Attribute { List attributes = new List(); var fields = typeof(TEnum).GetFields(bindingAttr: BindingFlags.Public | BindingFlags.Static); fields.ForEach(e => { // 获取枚举字段的特性 var attribute = Attribute.GetCustomAttribute(e, typeof(TAttribute)) as TAttribute; if (func(attribute)) { attributes.Add(attribute); } }); return attributes; } } }