public override void Serialize(Stream stream, Type type, object value) { var members = GetMembers(type); for (int i = 0; i < members.Length; i++) { var member = X20Member.WrapMember(members[i], value); ctx.Serializer.Serialize_Main(stream, member.Type, member.Value); } }
public override void Deserialize(Stream stream, Type type, ref object value) { var members = GetMembers(type); for (int i = 0; i < members.Length; i++) { var member = X20Member.WrapMember(members[i], value); var memberValue = member.Value; ctx.Serializer.Deserialize_Main(stream, member.Type, ref memberValue); member.Value = memberValue; value = member.Target; // this bit is needed for structs! } }