Ejemplo n.º 1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            existingValue = existingValue ?? Activator.CreateInstance(objectType, true);

            JObject jObject = JObject.Load(reader);

            FieldInfo[] privateFields = objectType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic);

            foreach (FieldInfo field in privateFields)
            {
                JToken jToken = jObject[field.Name];

                // Missing field
                if (jToken == null)
                {
                    MissingFields.Add(field);
                    continue;
                }

                jObject.Remove(field.Name);
                object value = jToken.ToObject(field.FieldType);

                field.SetValue(existingValue, value);
            }

            foreach (KeyValuePair <string, JToken> pair in jObject)
            {
                // Extra field
                ExtraFields.Add(pair);
            }

            return(existingValue);
        }
Ejemplo n.º 2
0
 public void Clear()
 {
     MissingFields.Clear();
     ExtraFields.Clear();
 }