public unsafe static byte[] Serialize <T>(T body, MessageHeader header) where T : struct { // serialize header and body var headerSize = MemUtils.Sizeof <MessageHeader>(); var headerBytes = MemUtils.Copy((byte *)&header, 0, headerSize); var bodyBytes = Serializer.Serialize <T>(body); // merge serialized parts into buffer var dest = new byte[bodyBytes.Length + headerBytes.Length]; Buffer.BlockCopy(headerBytes, 0, dest, 0, headerBytes.Length); Buffer.BlockCopy(bodyBytes, 0, dest, headerBytes.Length, bodyBytes.Length); return(dest); }