public object FromXml(XStreamReader reader, UnmarshallingContext context) { var folders = new Folders(); var count = reader.NoOfChildren(); reader.MoveDown(); for (var i = 0; i < count; i++) { folders.Add((Folder) context.ConvertAnother()); reader.MoveNext(); } reader.MoveUp(); return folders; }
public object UnMarshall(XStreamReader reader, UnmarshallingContext context, Type type) { int count = reader.NoOfChildren(); Array result = Array.CreateInstance(Type.GetType(reader.GetAttribute(ARRAY_TYPE)), count); if (count != 0) { reader.MoveDown(); for (int i = 0; i < count; i++) { var serializedValue = ReadSerializedValue(reader); var elementType = mapper.ResolveClassTypeFor(serializedValue); result.SetValue(context.ConvertAnother(result, elementType), i); reader.MoveNext(); } reader.MoveUp(); } return result; }
private void UnmarshalAs(object result, Type type, XStreamReader reader, UnmarshallingContext context) { if (type.Equals(typeof(object))) return; foreach (var field in mapper.GetSerializableFieldsIn(type)) { reader.MoveDown(field.SerializedName); var serializedField = ReadSerializedValue(reader); var fieldType = mapper.ResolveFieldTypeFor(field, serializedField); object fieldValue = context.ConvertAnother(result, fieldType); field.SetValue(result, fieldValue); reader.MoveUp(); } UnmarshalAs(result, type.BaseType, reader, context); }
private object ReadItem(XStreamReader reader, UnmarshallingContext context, IList result) { var serializedValue = ReadSerializedValue(reader); var type = mapper.ResolveClassTypeFor(serializedValue); return context.ConvertAnother(result, type); }