public async Task <byte[]> SerializeAsync <TPayload>(TPayload payload, bool isKey, string topic) { var subject = GetSubjectName(topic, isKey); var serializer = GetSerializer <TPayload>(); var schemaId = await _schemaRegistryClient.RegisterAsync(subject, serializer.ReaderSchema); var uintSchemaId = Convert.ToUInt32(schemaId); if (BitConverter.IsLittleEndian) { uintSchemaId = SwapEndianness(uintSchemaId); } using (var stream = new MemoryStream()) { var sw = new BinaryWriter(stream); sw.Write((byte)0x0); sw.Write(uintSchemaId); sw.Flush(); serializer.Serialize(stream, payload); stream.Seek(0, SeekOrigin.Begin); return(stream.ToArray()); } }