#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