#if !UNITY_5_3_OR_NEWER
using System;
using Newtonsoft.Json;
using System.Reflection;
using System.Collections.Generic;
using Newtonsoft.Json.Serialization;
namespace Cobilas.IO.Serialization.Json {
///
public class JsonContractResolver : DefaultContractResolver {
///
protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) {
List props = new List();
if (type.GetCustomAttribute() is null)
return props;
List fields = new List();
Type temp = type;
while (temp != null) {
FieldInfo[] infos = temp.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
if (infos != null)
foreach (FieldInfo item in infos)
if (item.DeclaringType == temp && !item.IsBackingField())
fields.Add(item);
temp = temp.BaseType;
}
foreach (FieldInfo item in fields) {
if (item.GetCustomAttribute() == null)
props.Add(base.CreateProperty(item, memberSerialization));
}
props.ForEach(p => { p.Writable = true; p.Readable = true; });
return props;
}
}
}
#endif