Преобразовать класс в байтовый массив + C#
Как я могу преобразовать класс в байтовый массив в C#. Это управляемый, поэтому следующий код не работает
int objsize = System.Runtime.InteropServices.Marshal.SizeOf(objTimeSeries3D);
byte[] arr = new byte[objsize];
IntPtr buff = System.Runtime.InteropServices.Marshal.AllocHGlobal(objsize);
System.Runtime.InteropServices.Marshal.StructureToPtr(objTimeSeries3D, buff, true);
System.Runtime.InteropServices.Marshal.Copy(buff, arr, 0, objsize);
System.Runtime.InteropServices.Marshal.FreeHGlobal(buff);
Спасибо
1 ответ
Решение
Ты можешь использовать BinaryFormatter
, Обратите внимание, что ваш класс должен быть [Serializable]
чтобы это работало.
private byte[] ToByteArray(object source)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, source);
return stream.ToArray();
}
}