using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.IO; using MiscUtil.Conversion; using MiscUtil.IO; namespace GenProto { public static class ProtocolCore { public interface ISerialize { void Serialize(EndianBinaryWriter binaryWriter); byte[] Serialize(); } public interface IDeserialize { void Deserialize(EndianBinaryReader binaryReader); void Deserialize(byte[] data); } public enum BasicTypeEnum { Custom = 0x00, Boolean = 0x01, Int8 = 0x02, UInt8 = 0x03, UInt16 = 0x04, Int16 = 0x05, Int32 = 0x06, UInt32 = 0x07, Int64 = 0x08, UInt64 = 0x09, Float = 0x10, Double = 0x11, String = 0x12, } public static BasicTypeEnum JudgeType(T value) { return value switch { bool => BasicTypeEnum.Boolean, byte => BasicTypeEnum.Int8, sbyte => BasicTypeEnum.UInt8, ushort => BasicTypeEnum.UInt16, short => BasicTypeEnum.Int16, int => BasicTypeEnum.Int32, uint => BasicTypeEnum.UInt32, long => BasicTypeEnum.Int64, ulong => BasicTypeEnum.UInt64, float => BasicTypeEnum.Float, double => BasicTypeEnum.Double, string => BasicTypeEnum.String, _ => BasicTypeEnum.Custom, }; } public static void WriteValue(this EndianBinaryWriter binaryWriter, T value) { switch (value) { case bool boolValue: binaryWriter.Write(boolValue); break; case byte byteValue: binaryWriter.Write(byteValue); break; case sbyte sbyteValue: binaryWriter.Write(sbyteValue); break; case ushort ushortValue: binaryWriter.Write(ushortValue); break; case short shortValue: binaryWriter.Write(shortValue); break; case int intValue: binaryWriter.Write(intValue); break; case uint uintValue: binaryWriter.Write(uintValue); break; case long longValue: binaryWriter.Write(longValue); break; case ulong ulongValue: binaryWriter.Write(ulongValue); break; case float floatValue: binaryWriter.Write(floatValue); break; case double doubleValue: binaryWriter.Write(doubleValue); break; case string stringValue: var bytesLength = (ushort)binaryWriter.Encoding.GetByteCount(stringValue); binaryWriter.Write(bytesLength); var bytes = binaryWriter.Encoding.GetBytes(stringValue); binaryWriter.Write(bytes); break; default: { switch (value) { case IList listValue: binaryWriter.WriteList(listValue); break; case ISerialize serialize: serialize.Serialize(binaryWriter); break; default: if (value != null) { throw new InvalidOperationException($"unexpect type: {value.GetType().FullName}"); } break; } break; } } } public static void WriteList(this EndianBinaryWriter binaryWriter, IList list) { var length = (ushort)(list?.Count ?? 0); binaryWriter.Write(length); if (list == null) return; for (var idx = 0; idx < length; idx++) { var value = list[idx]; binaryWriter.WriteValue(value); } } public static void ReadValue(this EndianBinaryReader binaryReader, out bool value) { value = binaryReader.ReadBoolean(); } public static void ReadValue(this EndianBinaryReader binaryReader, out sbyte value) { value = binaryReader.ReadSByte(); } public static void ReadValue(this EndianBinaryReader binaryReader, out byte value) { value = binaryReader.ReadByte(); } public static void ReadValue(this EndianBinaryReader binaryReader, out ushort value) { value = binaryReader.ReadUInt16(); } public static void ReadValue(this EndianBinaryReader binaryReader, out short value) { value = binaryReader.ReadInt16(); } public static void ReadValue(this EndianBinaryReader binaryReader, out int value) { value = binaryReader.ReadInt32(); } public static void ReadValue(this EndianBinaryReader binaryReader, out uint value) { value = binaryReader.ReadUInt32(); } public static void ReadValue(this EndianBinaryReader binaryReader, out long value) { value = binaryReader.ReadInt64(); } public static void ReadValue(this EndianBinaryReader binaryReader, out ulong value) { value = binaryReader.ReadUInt64(); } public static void ReadValue(this EndianBinaryReader binaryReader, out float value) { value = binaryReader.ReadSingle(); } public static void ReadValue(this EndianBinaryReader binaryReader, out double value) { value = binaryReader.ReadDouble(); } public static void ReadValue(this EndianBinaryReader binaryReader, out string value) { var bytesLength = binaryReader.ReadUInt16(); var bytes = binaryReader.ReadBytes(bytesLength); value = binaryReader.Encoding.GetString(bytes, 0, bytes.Length); } public static void ReadValue(this EndianBinaryReader binaryReader, out T value) where T : new() { value = default; value = new T(); if (value is not IDeserialize deserialize) { throw new InvalidOperationException($"error type: {typeof(T).FullName}"); } deserialize.Deserialize(binaryReader); } public static void ReadValue(this EndianBinaryReader binaryReader, out List outList, BasicTypeEnum basicTypeEnum) where T : new() { outList = default; IList list = default; var length = binaryReader.ReadUInt16(); if (length <= 0) { return; } for (var idx = 0; idx < length; idx++) { switch (basicTypeEnum) { case BasicTypeEnum.Boolean: list ??= new List(length); var boolValue = binaryReader.ReadBoolean(); list.Add(boolValue); break; case BasicTypeEnum.Int8: list ??= new List(length); var sbyteValue = binaryReader.ReadSByte(); list.Add(sbyteValue); break; case BasicTypeEnum.UInt8: list ??= new List(length); var byteValue = binaryReader.ReadByte(); list.Add(byteValue); break; case BasicTypeEnum.UInt16: list ??= new List(length); var ushortValue = binaryReader.ReadUInt16(); list.Add(ushortValue); break; case BasicTypeEnum.Int16: list ??= new List(length); var shortValue = binaryReader.ReadInt16(); list.Add(shortValue); break; case BasicTypeEnum.Int32: list ??= new List(length); var intValue = binaryReader.ReadInt32(); list.Add(intValue); break; case BasicTypeEnum.UInt32: list ??= new List(length); var uintValue = binaryReader.ReadUInt32(); list.Add(uintValue); break; case BasicTypeEnum.Int64: list ??= new List(length); var longValue = binaryReader.ReadInt64(); list.Add(longValue); break; case BasicTypeEnum.UInt64: list ??= new List(length); var ulongValue = binaryReader.ReadUInt64(); list.Add(ulongValue); break; case BasicTypeEnum.Float: list ??= new List(length); var singleValue = binaryReader.ReadSingle(); list.Add(singleValue); break; case BasicTypeEnum.Double: list ??= new List(length); var doubleValue = binaryReader.ReadDouble(); list.Add(doubleValue); break; case BasicTypeEnum.String: list ??= new List(length); var stringValue = binaryReader.ReadString(); list.Add(stringValue); break; case BasicTypeEnum.Custom: list ??= new List(length); if (new T() is IDeserialize item) { item.Deserialize(binaryReader); list.Add(item); } break; default: throw new InvalidOperationException(); } } outList = list as List; } } public class test : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 1; public string aa; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(aa); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out aa); } } public class phoneNumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 2; public test number; public int type; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { if (number != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(number); } else { binaryWriter.WriteValue(0); } binaryWriter.WriteValue(type); } public void Deserialize(BinaryReader binaryReader) { if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out number); } binaryReader.ReadValue(out type); } } public class person : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 3; public string name; public int id; public string email; public List phone; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(name); binaryWriter.WriteValue(id); binaryWriter.WriteValue(email); binaryWriter.WriteValue(phone); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out name); binaryReader.ReadValue(out id); binaryReader.ReadValue(out email); binaryReader.ReadValue(out phone, 0x00); } } public class addressBook : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 4; public List person; public List other; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(person); binaryWriter.WriteValue(other); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out person, 0x00); binaryReader.ReadValue(out other, 0x00); } } public class union : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 5; public string test; public int type; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(test); binaryWriter.WriteValue(type); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out test); binaryReader.ReadValue(out type); } } public class tbool : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 6; public bool bool; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(bool); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out bool); } } public class tint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 7; public sbyte int1; public sbyte int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tuint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 8; public byte int1; public byte int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 9; public short int1; public short int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tuint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 10; public ushort int1; public ushort int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 11; public int int1; public int int2; public int int3; public int int4; public int int5; public int int6; public int int7; public int int8; public int int9; public int int10; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); binaryWriter.WriteValue(int3); binaryWriter.WriteValue(int4); binaryWriter.WriteValue(int5); binaryWriter.WriteValue(int6); binaryWriter.WriteValue(int7); binaryWriter.WriteValue(int8); binaryWriter.WriteValue(int9); binaryWriter.WriteValue(int10); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); binaryReader.ReadValue(out int3); binaryReader.ReadValue(out int4); binaryReader.ReadValue(out int5); binaryReader.ReadValue(out int6); binaryReader.ReadValue(out int7); binaryReader.ReadValue(out int8); binaryReader.ReadValue(out int9); binaryReader.ReadValue(out int10); } } public class tuint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 12; public uint int1; public uint int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 13; public long int1; public long int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tuint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 14; public ulong int1; public ulong int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tinteger : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 15; public integer int1; public integer int2; public integer int3; public integer int4; public integer int5; public integer int6; public integer int7; public integer int8; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { if (int1 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int1); } else { binaryWriter.WriteValue(0); } if (int2 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int2); } else { binaryWriter.WriteValue(0); } if (int3 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int3); } else { binaryWriter.WriteValue(0); } if (int4 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int4); } else { binaryWriter.WriteValue(0); } if (int5 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int5); } else { binaryWriter.WriteValue(0); } if (int6 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int6); } else { binaryWriter.WriteValue(0); } if (int7 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int7); } else { binaryWriter.WriteValue(0); } if (int8 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int8); } else { binaryWriter.WriteValue(0); } } public void Deserialize(BinaryReader binaryReader) { if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int1); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int2); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int3); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int4); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int5); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int6); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int7); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int8); } } } public class tnumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 16; public number int1; public number int2; public number int3; public number int4; public number int5; public number int6; public number int7; public number int8; public number float1; public number float2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { if (int1 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int1); } else { binaryWriter.WriteValue(0); } if (int2 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int2); } else { binaryWriter.WriteValue(0); } if (int3 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int3); } else { binaryWriter.WriteValue(0); } if (int4 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int4); } else { binaryWriter.WriteValue(0); } if (int5 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int5); } else { binaryWriter.WriteValue(0); } if (int6 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int6); } else { binaryWriter.WriteValue(0); } if (int7 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int7); } else { binaryWriter.WriteValue(0); } if (int8 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(int8); } else { binaryWriter.WriteValue(0); } if (float1 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(float1); } else { binaryWriter.WriteValue(0); } if (float2 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(float2); } else { binaryWriter.WriteValue(0); } } public void Deserialize(BinaryReader binaryReader) { if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int1); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int2); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int3); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int4); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int5); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int6); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int7); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out int8); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out float1); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out float2); } } } public class tfloat : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 17; public float int1; public float int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tdouble : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 18; public double int1; public double int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tstring : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 19; public string int1; public string int2; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); binaryWriter.WriteValue(int2); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); binaryReader.ReadValue(out int2); } } public class tlistbool : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 20; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x01); } } public class tlistint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 21; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x02); } } public class tlistuint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 22; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x03); } } public class tlistint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 23; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x04); } } public class tlistuint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 24; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x05); } } public class tlistint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 25; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x06); } } public class tlistuint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 26; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x07); } } public class tlistint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 27; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x08); } } public class tlistuint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 28; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x09); } } public class tlistinteger : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 29; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x00); } } public class tlistnumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 30; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x00); } } public class tlistfloat : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 31; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x10); } } public class tlistdouble : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 32; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x11); } } public class tliststring : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 33; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x12); } } public class tlistunion : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 34; public List int1; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1, 0x00); } } public class allType : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 35; public bool bool; public sbyte int8; public byte uint8; public short int16; public ushort uint16; public int int32; public uint uint32; public long int64; public ulong uint64; public integer inte8; public integer uinte8; public integer inte16; public integer uinte16; public integer inte32; public integer uinte32; public integer inte64; public integer uinte64; public number num8; public number unum8; public number num16; public number unum16; public number num32; public number unum32; public number num64; public number unum64; public number numfloat; public number numdouble; public float float; public double double; public string string1; public string string2; public union union; public List lbool; public List lint8; public List luint8; public List lint16; public List luint16; public List lint32; public List luint32; public List lint64; public List luint64; public List linte8; public List linte16; public List linte32; public List linte64; public List lnum8; public List lnum16; public List lnum32; public List lnum64; public List lnfloat32; public List lnfloat64; public List lfloat; public List ldouble; public List lstring; public List lunion; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(bool); binaryWriter.WriteValue(int8); binaryWriter.WriteValue(uint8); binaryWriter.WriteValue(int16); binaryWriter.WriteValue(uint16); binaryWriter.WriteValue(int32); binaryWriter.WriteValue(uint32); binaryWriter.WriteValue(int64); binaryWriter.WriteValue(uint64); if (inte8 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(inte8); } else { binaryWriter.WriteValue(0); } if (uinte8 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(uinte8); } else { binaryWriter.WriteValue(0); } if (inte16 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(inte16); } else { binaryWriter.WriteValue(0); } if (uinte16 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(uinte16); } else { binaryWriter.WriteValue(0); } if (inte32 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(inte32); } else { binaryWriter.WriteValue(0); } if (uinte32 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(uinte32); } else { binaryWriter.WriteValue(0); } if (inte64 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(inte64); } else { binaryWriter.WriteValue(0); } if (uinte64 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(uinte64); } else { binaryWriter.WriteValue(0); } if (num8 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(num8); } else { binaryWriter.WriteValue(0); } if (unum8 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(unum8); } else { binaryWriter.WriteValue(0); } if (num16 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(num16); } else { binaryWriter.WriteValue(0); } if (unum16 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(unum16); } else { binaryWriter.WriteValue(0); } if (num32 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(num32); } else { binaryWriter.WriteValue(0); } if (unum32 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(unum32); } else { binaryWriter.WriteValue(0); } if (num64 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(num64); } else { binaryWriter.WriteValue(0); } if (unum64 != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(unum64); } else { binaryWriter.WriteValue(0); } if (numfloat != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(numfloat); } else { binaryWriter.WriteValue(0); } if (numdouble != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(numdouble); } else { binaryWriter.WriteValue(0); } binaryWriter.WriteValue(float); binaryWriter.WriteValue(double); binaryWriter.WriteValue(string1); binaryWriter.WriteValue(string2); if (union != null) { binaryWriter.WriteValue(1); binaryWriter.WriteValue(union); } else { binaryWriter.WriteValue(0); } binaryWriter.WriteValue(lbool); binaryWriter.WriteValue(lint8); binaryWriter.WriteValue(luint8); binaryWriter.WriteValue(lint16); binaryWriter.WriteValue(luint16); binaryWriter.WriteValue(lint32); binaryWriter.WriteValue(luint32); binaryWriter.WriteValue(lint64); binaryWriter.WriteValue(luint64); binaryWriter.WriteValue(linte8); binaryWriter.WriteValue(linte16); binaryWriter.WriteValue(linte32); binaryWriter.WriteValue(linte64); binaryWriter.WriteValue(lnum8); binaryWriter.WriteValue(lnum16); binaryWriter.WriteValue(lnum32); binaryWriter.WriteValue(lnum64); binaryWriter.WriteValue(lnfloat32); binaryWriter.WriteValue(lnfloat64); binaryWriter.WriteValue(lfloat); binaryWriter.WriteValue(ldouble); binaryWriter.WriteValue(lstring); binaryWriter.WriteValue(lunion); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out bool); binaryReader.ReadValue(out int8); binaryReader.ReadValue(out uint8); binaryReader.ReadValue(out int16); binaryReader.ReadValue(out uint16); binaryReader.ReadValue(out int32); binaryReader.ReadValue(out uint32); binaryReader.ReadValue(out int64); binaryReader.ReadValue(out uint64); if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out inte8); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out uinte8); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out inte16); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out uinte16); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out inte32); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out uinte32); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out inte64); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out uinte64); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out num8); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out unum8); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out num16); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out unum16); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out num32); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out unum32); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out num64); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out unum64); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out numfloat); } if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out numdouble); } binaryReader.ReadValue(out float); binaryReader.ReadValue(out double); binaryReader.ReadValue(out string1); binaryReader.ReadValue(out string2); if (binaryReader.ReadBoolean()) { binaryReader.ReadValue(out union); } binaryReader.ReadValue(out lbool, 0x01); binaryReader.ReadValue(out lint8, 0x02); binaryReader.ReadValue(out luint8, 0x03); binaryReader.ReadValue(out lint16, 0x04); binaryReader.ReadValue(out luint16, 0x05); binaryReader.ReadValue(out lint32, 0x06); binaryReader.ReadValue(out luint32, 0x07); binaryReader.ReadValue(out lint64, 0x08); binaryReader.ReadValue(out luint64, 0x09); binaryReader.ReadValue(out linte8, 0x00); binaryReader.ReadValue(out linte16, 0x00); binaryReader.ReadValue(out linte32, 0x00); binaryReader.ReadValue(out linte64, 0x00); binaryReader.ReadValue(out lnum8, 0x00); binaryReader.ReadValue(out lnum16, 0x00); binaryReader.ReadValue(out lnum32, 0x00); binaryReader.ReadValue(out lnum64, 0x00); binaryReader.ReadValue(out lnfloat32, 0x00); binaryReader.ReadValue(out lnfloat64, 0x00); binaryReader.ReadValue(out lfloat, 0x10); binaryReader.ReadValue(out ldouble, 0x11); binaryReader.ReadValue(out lstring, 0x12); binaryReader.ReadValue(out lunion, 0x00); } } public class testnull : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 36; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { } public void Deserialize(BinaryReader binaryReader) { } } public class person1 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 1001; public string name; public int id; public string email; public List phone; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream); Deserialize(binaryReader); } public void Serialize(EndianBinaryWriter binaryWriter) { binaryWriter.WriteValue(name); binaryWriter.WriteValue(id); binaryWriter.WriteValue(email); binaryWriter.WriteValue(phone); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out name); binaryReader.ReadValue(out id); binaryReader.ReadValue(out email); binaryReader.ReadValue(out phone, 0x00); } } }