void ISerializableSerializer.WriteValue <TBufferWriter>(ref Writer <TBufferWriter> writer, object value) { var item = (T)value; _callbacks.OnSerializing?.Invoke(ref item, _streamingContext); var info = new SerializationInfo(Type, _formatterConverter); ((System.Runtime.Serialization.ISerializable)value).GetObjectData(info, _streamingContext); var first = true; foreach (var field in info) { var surrogate = new SerializationEntrySurrogate { Name = field.Name, Value = field.Value }; _entrySerializer.WriteField(ref writer, first ? 1 : (uint)0, SerializationEntryCodec.SerializationEntryType, surrogate); if (first) { first = false; } } _callbacks.OnSerialized?.Invoke(ref item, _streamingContext); }
public void WriteValue <TBufferWriter>(ref Writer <TBufferWriter> writer, object value) where TBufferWriter : IBufferWriter <byte> { var type = value.GetType(); var callbacks = _serializationCallbacks.GetReferenceTypeCallbacks(type); var info = new SerializationInfo(type, _formatterConverter); callbacks.OnSerializing?.Invoke(value, _streamingContext); ((System.Runtime.Serialization.ISerializable)value).GetObjectData(info, _streamingContext); var first = true; foreach (var field in info) { var surrogate = new SerializationEntrySurrogate { Name = field.Name, Value = field.Value }; _entrySerializer.WriteField(ref writer, first ? 1 : (uint)0, SerializationEntryCodec.SerializationEntryType, surrogate); if (first) { first = false; } } callbacks.OnSerialized?.Invoke(value, _streamingContext); }