将类转换为字节数组+ C#

时间:2010-04-22 08:20:53

标签: c#-3.0

如何在C#中将Class转换为字节数组。这是一个托管的,因此以下代码失败

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 个答案:

答案 0 :(得分:13)

您可以使用BinaryFormatter。请注意,您的课程必须为[Serializable]才能生效。

private byte[] ToByteArray(object source)
{
    var formatter = new BinaryFormatter();
    using (var stream = new MemoryStream())
    {
        formatter.Serialize(stream, source);                
        return stream.ToArray();
    }
}