public static IEnumerable<FieldInfo> GetFields(this Type type, Newtonsoft.Json.Utilities.BindingFlags bindingFlags) { IList<FieldInfo> fields = (bindingFlags.HasFlag(Newtonsoft.Json.Utilities.BindingFlags.DeclaredOnly)) ? type.GetTypeInfo().DeclaredFields.ToList() : type.GetTypeInfo().GetFieldsRecursive(); return fields.Where(f => TestAccessibility(f, bindingFlags)).ToList(); }
private static bool TestAccessibility(MethodBase member, Newtonsoft.Json.Utilities.BindingFlags bindingFlags) { bool visibility = (member.IsPublic && bindingFlags.HasFlag(Newtonsoft.Json.Utilities.BindingFlags.Public)) || (!member.IsPublic && bindingFlags.HasFlag(Newtonsoft.Json.Utilities.BindingFlags.NonPublic)); bool instance = (member.IsStatic && bindingFlags.HasFlag(Newtonsoft.Json.Utilities.BindingFlags.Static)) || (!member.IsStatic && bindingFlags.HasFlag(Newtonsoft.Json.Utilities.BindingFlags.Instance)); return visibility && instance; }
public static IEnumerable<PropertyInfo> GetProperties(this Type type, Newtonsoft.Json.Utilities.BindingFlags bindingFlags) { IList<PropertyInfo> properties = (bindingFlags.HasFlag(Newtonsoft.Json.Utilities.BindingFlags.DeclaredOnly)) ? type.GetTypeInfo().DeclaredProperties.ToList() : type.GetTypeInfo().GetPropertiesRecursive(); return properties.Where(p => TestAccessibility(p, bindingFlags)); }