public void Serialize <TBufferWriter>(ref Writer <TBufferWriter> writer, ObjectWithoutNewField obj) where TBufferWriter : IBufferWriter <byte> { StringCodec.WriteField(ref writer, 0, typeof(string), obj.Blah); Int32Codec.WriteField(ref writer, 1, typeof(int), obj.Version); // serializing a new field to simulate a binary that's created from a newer version of the object ObjectCodec.WriteField(ref writer, 6, typeof(object), "I will be stuck in binary limbo! (I shouldn't be part of the deserialized object)"); }
public void WriteField <TBufferWriter>(ref Writer <TBufferWriter> writer, uint fieldIdDelta, Type expectedType, SiloAddress value) where TBufferWriter : IBufferWriter <byte> { if (value is null) { ReferenceCodec.WriteNullReference(ref writer, fieldIdDelta, expectedType); return; } ReferenceCodec.MarkValueField(writer.Session); writer.WriteStartObject(fieldIdDelta, expectedType, _codecFieldType); IPEndPointCodec.WriteField(ref writer, 0U, _iPEndPointType, value.Endpoint); Int32Codec.WriteField(ref writer, 1U, _int32Type, value.Generation); writer.WriteEndObject(); }
public void WriteField <TBufferWriter>(ref Writer <TBufferWriter> writer, uint fieldIdDelta, Type expectedType, UndeserializableType value) where TBufferWriter : IBufferWriter <byte> { Int32Codec.WriteField(ref writer, fieldIdDelta, typeof(UndeserializableType), value.Number); }
public void Serialize <TBufferWriter>(ref Writer <TBufferWriter> writer, ObjectWithNewField obj) where TBufferWriter : IBufferWriter <byte> { // not serializing newField to simulate a binary that's created from a previous version of the object StringCodec.WriteField(ref writer, 0, typeof(string), obj.Blah); Int32Codec.WriteField(ref writer, 2, typeof(int), obj.Version); }