Example #1
0
		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();
		}
Example #2
0
		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;
		}
Example #3
0
		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));
		}