public override void Write(void *fieldAddress, SerializerOutput output) { var obj = Unsafe.Read <object>(fieldAddress); if (obj == null) { output.WriteNull(); return; } if (_stack >= MaxStack) { throw new CircularReferenceException("Circular references are not suported!"); } _stack++; var track = output.BeginSizeTrack(); var pinnable = Unsafe.As <object, PinnableObject>(ref obj); fixed(byte *objectAddress = &pinnable.Pinnable) { _fieldsSerializer.Write(objectAddress, output); } output.WriteSizeTrack(track); _stack--; }
public override void Write(void *fieldAddress, SerializerOutput output) { var track = output.BeginSizeTrack(); _fieldsSerializer.Write((byte *)fieldAddress, output); output.WriteSizeTrack(track); }