Net.Like.Xue.Tokyo/Assets/BITKit/Core/Binary/BinaryBuilder.cs

68 lines
1.8 KiB
C#

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;
}
}
}