using System.IO; using System.Net.Http.Headers; namespace BITKit { public class BinaryBuilder { private readonly MemoryStream _memoryStream = new(); internal readonly BinaryWriter writer; private BinaryBuilder() { writer = new BinaryWriter(_memoryStream); } public static BinaryBuilder Create() { return new BinaryBuilder(); } public BinaryBuilder WriteObject(object obj) { BITBinary.Write(writer,obj); return this; } public byte[] Build() { writer.Dispose(); var _bytes = _memoryStream.ToArray(); _memoryStream.Close(); return _memoryStream.ToArray(); } } public static class BinaryBuilderExtensions { public static BinaryBuilder Write(this BinaryBuilder self, bool value) { self.writer.Write(value); return self; } public static BinaryBuilder Write(this BinaryBuilder self, float value) { self.writer.Write(value); return self; } public static BinaryBuilder Write(this BinaryBuilder self, int value) { self.writer.Write(value); return self; } public static BinaryBuilder Write(this BinaryBuilder self, long value) { self.writer.Write(value); return self; } public static BinaryBuilder Write(this BinaryBuilder self, byte value) { self.writer.Write(value); return self; } public static BinaryBuilder Write(this BinaryBuilder self, string value) { self.writer.Write(value); return self; } } }