Ejemplo n.º 1
0
        public static object DeserializeFull(JObject jObject)
        {
            object result = DeserializeStart(jObject);

            if (result != null)
            {
                Type   type         = result.GetType();
                JToken contentToken = jObject["content"];

                FieldInfo[] members = GetSerializableFields(type);

                IAdventuresUnknownSerializer auSerializer = result as IAdventuresUnknownSerializer;
                if (auSerializer != null)
                {
                    auSerializer.Deserialize(contentToken);//, members);
                }
                else
                {
                    foreach (FieldInfo member in members)
                    {
                        DeserializeObject(contentToken[member.Name], member, result);
                    }
                }
                IAdventuresUnknownSerializeCallback auSerializeCB = result as IAdventuresUnknownSerializeCallback;
                if (auSerializeCB != null)
                {
                    auSerializeCB.OnAfterDeserialize();
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        public static void SerializeFull(JsonTextWriter jsonTextWriter, object obj)
        {
            SerializeStart(jsonTextWriter, obj);
            Type type = obj.GetType();
            IAdventuresUnknownSerializer auSerializer = obj as IAdventuresUnknownSerializer;

            FieldInfo[] members = GetSerializableFields(type);
            object[]    values  = FormatterServices.GetObjectData(obj, members);
            if (auSerializer != null)
            {
                auSerializer.Serialize(jsonTextWriter);//, members, values);
            }
            else
            {
                for (int i = 0; i < values.Length; ++i)
                {
                    SerializeObject(jsonTextWriter, members[i].Name, values[i]);
                }
            }
            SerializeEnd(jsonTextWriter, obj);
        }