using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.IO; namespace GenProto { public static class ProtocolCore { public interface ISerialize { void Serialize(BinaryWriter binaryWriter); byte[] Serialize(); } public interface IDeserialize { void Deserialize(BinaryReader 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 BinaryWriter 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: binaryWriter.Write(stringValue); break; default: { binaryWriter.Write(value != null); 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 BinaryWriter 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]; if (idx == 0) { var basicType = JudgeType(value); binaryWriter.Write((byte) basicType); } binaryWriter.WriteValue(value); } } public static void ReadValue(this BinaryReader binaryReader, out bool value) { value = binaryReader.ReadBoolean(); } public static void ReadValue(this BinaryReader binaryReader, out sbyte value) { value = binaryReader.ReadSByte(); } public static void ReadValue(this BinaryReader binaryReader, out byte value) { value = binaryReader.ReadByte(); } public static void ReadValue(this BinaryReader binaryReader, out ushort value) { value = binaryReader.ReadUInt16(); } public static void ReadValue(this BinaryReader binaryReader, out short value) { value = binaryReader.ReadInt16(); } public static void ReadValue(this BinaryReader binaryReader, out int value) { value = binaryReader.ReadInt32(); } public static void ReadValue(this BinaryReader binaryReader, out uint value) { value = binaryReader.ReadUInt32(); } public static void ReadValue(this BinaryReader binaryReader, out long value) { value = binaryReader.ReadInt64(); } public static void ReadValue(this BinaryReader binaryReader, out ulong value) { value = binaryReader.ReadUInt64(); } public static void ReadValue(this BinaryReader binaryReader, out float value) { value = binaryReader.ReadSingle(); } public static void ReadValue(this BinaryReader binaryReader, out double value) { value = binaryReader.ReadDouble(); } public static void ReadValue(this BinaryReader binaryReader, out string value) { value = binaryReader.ReadString(); } public static void ReadValue(this BinaryReader binaryReader, out T value) where T : new() { value = default; var haveValue = binaryReader.ReadBoolean(); if (!haveValue) { return; } value = new T(); if (!(value is IDeserialize deserialize)) { throw new InvalidOperationException($"error type: {typeof(T).FullName}"); } deserialize.Deserialize(binaryReader); } public static void ReadValue(this BinaryReader binaryReader, out List outList) where T : new() { outList = default; IList list = default; var haveValue = binaryReader.ReadBoolean(); if (!haveValue) { return; } var length = binaryReader.ReadUInt16(); if (length <= 0) { return; } var basicTypeEnum = (BasicTypeEnum) binaryReader.ReadByte(); 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); var state = binaryReader.ReadBoolean(); if (state) { 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(number); binaryWriter.WriteValue(type); } public void Deserialize(BinaryReader binaryReader) { 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(person); binaryWriter.WriteValue(other); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out person); binaryReader.ReadValue(out other); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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); } 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); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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(float1); binaryWriter.WriteValue(float2); } 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 float1); 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter binaryWriter) { binaryWriter.WriteValue(int1); } public void Deserialize(BinaryReader binaryReader) { binaryReader.ReadValue(out int1); } } 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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); binaryWriter.WriteValue(inte8); binaryWriter.WriteValue(uinte8); binaryWriter.WriteValue(inte16); binaryWriter.WriteValue(uinte16); binaryWriter.WriteValue(inte32); binaryWriter.WriteValue(uinte32); binaryWriter.WriteValue(inte64); binaryWriter.WriteValue(uinte64); binaryWriter.WriteValue(num8); binaryWriter.WriteValue(unum8); binaryWriter.WriteValue(num16); binaryWriter.WriteValue(unum16); binaryWriter.WriteValue(num32); binaryWriter.WriteValue(unum32); binaryWriter.WriteValue(num64); binaryWriter.WriteValue(unum64); binaryWriter.WriteValue(numfloat); binaryWriter.WriteValue(numdouble); binaryWriter.WriteValue(float); binaryWriter.WriteValue(double); binaryWriter.WriteValue(string1); binaryWriter.WriteValue(string2); binaryWriter.WriteValue(union); 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); binaryReader.ReadValue(out inte8); binaryReader.ReadValue(out uinte8); binaryReader.ReadValue(out inte16); binaryReader.ReadValue(out uinte16); binaryReader.ReadValue(out inte32); binaryReader.ReadValue(out uinte32); binaryReader.ReadValue(out inte64); binaryReader.ReadValue(out uinte64); binaryReader.ReadValue(out num8); binaryReader.ReadValue(out unum8); binaryReader.ReadValue(out num16); binaryReader.ReadValue(out unum16); binaryReader.ReadValue(out num32); binaryReader.ReadValue(out unum32); binaryReader.ReadValue(out num64); binaryReader.ReadValue(out unum64); binaryReader.ReadValue(out numfloat); binaryReader.ReadValue(out numdouble); binaryReader.ReadValue(out float); binaryReader.ReadValue(out double); binaryReader.ReadValue(out string1); binaryReader.ReadValue(out string2); binaryReader.ReadValue(out union); binaryReader.ReadValue(out lbool); binaryReader.ReadValue(out lint8); binaryReader.ReadValue(out luint8); binaryReader.ReadValue(out lint16); binaryReader.ReadValue(out luint16); binaryReader.ReadValue(out lint32); binaryReader.ReadValue(out luint32); binaryReader.ReadValue(out lint64); binaryReader.ReadValue(out luint64); binaryReader.ReadValue(out linte8); binaryReader.ReadValue(out linte16); binaryReader.ReadValue(out linte32); binaryReader.ReadValue(out linte64); binaryReader.ReadValue(out lnum8); binaryReader.ReadValue(out lnum16); binaryReader.ReadValue(out lnum32); binaryReader.ReadValue(out lnum64); binaryReader.ReadValue(out lnfloat32); binaryReader.ReadValue(out lnfloat64); binaryReader.ReadValue(out lfloat); binaryReader.ReadValue(out ldouble); binaryReader.ReadValue(out lstring); binaryReader.ReadValue(out lunion); } } public class testnull : ProtocolCore.ISerialize, ProtocolCore.IDeserialize { public const int ProtoId = 36; public byte[] Serialize() { using var memoryStream = new MemoryStream(); using var binaryWriter = new BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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 BinaryWriter(memoryStream); Serialize(binaryWriter); return memoryStream.ToArray(); } public void Deserialize(byte[] data) { using var memoryStream = new MemoryStream(data); using var binaryReader = new BinaryReader(memoryStream); Deserialize(binaryReader); } public void Serialize(BinaryWriter 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); } } }