public static List <PropertyInfo> FindProperties <T>(Type type, FindMemberAttributeFilter <T> filter) where T : Attribute { return((from pi in type.GetProperties() let attrs = pi.GetCustomAttributes(typeof(T), true) where attrs.Length == 1 && (filter == null || filter(attrs[0] as T)) select pi).ToList()); }
public static FieldInfo FindField <T>(Type type, BindingFlags bindingFlags, FindMemberAttributeFilter <T> filter) where T : Attribute { return((from fi in type.GetFields(bindingFlags) let attrs = fi.GetCustomAttributes(typeof(T), true) where attrs.Length == 1 && filter(attrs[0] as T) select fi).FirstOrDefault()); }