public static void DeserializeFromData <T>(ref T instance, PrimitiveData data, Type peak) { var obj = instance as object; ReferenceDeserializer references = new ReferenceDeserializer(); deserializeFromData(ref obj, data, peak, references); }
private static object deserializeDataArray(Type type, PrimitiveData data, ReferenceDeserializer references) { var instance = Activator.CreateInstance(type) as ICollection; deserializeDataArray(ref instance, data, references); return(instance); }
private static void deserializeDataArray(ref ICollection instance, PrimitiveData data, ReferenceDeserializer references) { var array = data.ToList(); //var elementType = GetElementType(instance.GetType()); var elementType = instance.GetType().GetGenericArguments()[0]; //var collection = makeCollection(elementType); var collection = instance; //Result.GetType().GetMethod("Add").Invoke(Result, new[] { objTemp }); //var list = typeof(ICollection<>).MakeGenericType(elementType); foreach (var element in array) { var obj = deserializeFromData(elementType, element, typeof(object), references); collection.GetType().GetMethod("Add").Invoke(collection, new[] { obj }); } }
private static void deserializeDataObject(ref object instance, PrimitiveData data, Type peak, ReferenceDeserializer references) { var objectDictionary = data.ToDataObject(); if (instance.GetType().HasAttribute <ReferenceableAttribute>()) { references.AddReferenceable(data.ReferenceID, instance); } foreach (var field in instance.GetType().GetAllFields(peak, bindingFlags)) { PrimitiveData subData; if (objectDictionary.TryGetValue(field.Name, out subData)) { if (field.HasAttribute <ReferenceAttribute>()) { references.Push(instance, field, subData.ReferenceID); } else { field.SetValue(instance, deserializeFromData(field.FieldType, subData, typeof(object), references)); } } } }
private static object deserializeDataObject(Type type, PrimitiveData data, Type peak, ReferenceDeserializer references) { var instance = Activator.CreateInstance(data.OriginalType); deserializeDataObject(ref instance, data, peak, references); return(instance); //var objectDictionary = data.ToDataObject(); //foreach (var field in type.GetAllFields(peak, bindingFlags)) //{ // PrimitiveData subData; // if (objectDictionary.TryGetValue(field.Name, out subData)) // field.SetValue(instance, deserializeFromData(field.FieldType, subData, typeof(object))); //} //return instance; }
private static void deserializeFromData(ref object instance, PrimitiveData data, Type peak, ReferenceDeserializer references) { if (data.Type == PrimitiveDataType.Null || data.Type == PrimitiveDataType.Invaild) { throw new InvalidOperationException("Data was null or invalid."); } if (data.Type == PrimitiveDataType.Object) { deserializeDataObject(ref instance, data, peak, references); } else if (data.Type == PrimitiveDataType.Array) { var collection = instance as ICollection; deserializeDataArray(ref collection, data, references); } else { data.ToObject(instance.GetType()); } }
private static object deserializeFromData(Type type, PrimitiveData data, Type peak, ReferenceDeserializer references) { if (data.Type == PrimitiveDataType.Null || data.Type == PrimitiveDataType.Invaild) { throw new InvalidOperationException("Data was null or invalid."); } //var peakABoo = PrimitiveData.GetType() if (data.Type == PrimitiveDataType.Object) { return(deserializeDataObject(type, data, peak, references)); } else if (data.Type == PrimitiveDataType.Array) { return(deserializeDataArray(type, data, references)); } else { return(data.ToObject(type)); } }
public static object DeserializeFromData(Type type, PrimitiveData data, Type peak) { ReferenceDeserializer references = new ReferenceDeserializer(); return(deserializeFromData(type, data, peak, references)); }
public static T DeserializeFromData <T>(PrimitiveData data, Type peak) { ReferenceDeserializer references = new ReferenceDeserializer(); return((T)deserializeFromData(typeof(T), data, peak, references)); }