private string SerializeNestedObject <T>(NestedMapping nestedMapping, T data) { if (data == null) { return(string.Format("{0} : {1} \n", nestedMapping.ScopedName, null)); } var output = new StringBuilder(); var currentData = nestedMapping.GetValue(data); var result = Serialize(nestedMapping.InternalMappings, currentData); output.Append(result); return(output.ToString()); }
protected virtual void SerializeNestedObject <T>(NestedMapping nestedMapping, T data, TSerializeState state) { var currentData = AttemptGetValue(nestedMapping, data, state); if (currentData == null) { return; } if (nestedMapping.IsDynamicType) { SerializeDynamicTypeData(currentData, state); return; } Serialize(nestedMapping.InternalMappings, currentData, state); }
public virtual NestedMapping CreateNestedMappingFor(PropertyInfo propertyInfo, string scope) { var nestedMapping = new NestedMapping { LocalName = propertyInfo.Name, ScopedName = scope, Type = propertyInfo.PropertyType, GetValue = x => propertyInfo.GetValue(x, null), SetValue = (x, v) => propertyInfo.SetValue(x, v, null), IsDynamicType = TypeAnalyzer.IsDynamicType(propertyInfo) }; var mappingTypes = GetMappingsFromType(propertyInfo.PropertyType, scope); nestedMapping.InternalMappings.AddRange(mappingTypes); return(nestedMapping); }
protected virtual void DeserializeNestedObject <T>(NestedMapping nestedMapping, T instance, TDeserializeState state) { if (IsObjectNull(state)) { nestedMapping.SetValue(instance, null); return; } if (nestedMapping.IsDynamicType) { var dynamicInstance = DeserializeDynamicTypeData(state); nestedMapping.SetValue(instance, dynamicInstance); return; } var childInstance = TypeCreator.Instantiate(nestedMapping.Type); nestedMapping.SetValue(instance, childInstance); Deserialize(nestedMapping.InternalMappings, childInstance, state); }