public byte[] Serialize(params object[] data)
{
try
{
MemoryStream Stream = new MemoryStream();
BinaryWriter Writer = new BinaryWriter(Stream, Encoding.UTF8);
byte Current = 0;
Writer.Write(Convert.ToByte(data.Length));
for (int I = 0; I <= data.Length - 1; I++)
{
Current = Table[data[I].GetType()];
Writer.Write(Current);
switch (Current)
{
case 0:
Writer.Write((bool)data[I]);
break;
case 1:
Writer.Write((byte)data[I]);
break;
case 2:
Writer.Write(((byte[])data[I]).Length);
Writer.Write((byte[])data[I]);
break;
case 3:
Writer.Write((char)data[I]);
break;
case 4:
Writer.Write(((char[])data[I]).ToString());
break;
case 5:
Writer.Write((decimal)data[I]);
break;
case 6:
Writer.Write((double)data[I]);
break;
case 7:
Writer.Write((int)data[I]);
break;
case 8:
Writer.Write((long)data[I]);
break;
case 9:
Writer.Write((sbyte)data[I]);
break;
case 10:
Writer.Write((short)data[I]);
break;
case 11:
Writer.Write((float)data[I]);
break;
case 12:
Writer.Write((string)data[I]);
break;
case 13:
Writer.Write((uint)data[I]);
break;
case 14:
Writer.Write((ulong)data[I]);
break;
case 15:
Writer.Write((ushort)data[I]);
break;
case 16:
Writer.Write(((System.DateTime)data[I]).ToBinary());
break;
}
}
Writer.Close();
return Stream.ToArray();
}
catch
{
return null;
}
}