C# 2008(.net)百分跪求高手关于自定义的类转换byte[]问题!

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:39:51
把一个DataTable类转换成Byte数组可以这样
DataTable LeafDataTableTemp;
byte[] LeafDataTableByteTemp;
System.IO.MemoryStream LeafMemoryStreamTemp = new MemoryStream();
BinaryFormatter LeafBinaryFormatterTemp = new BinaryFormatter();
LeafBinaryFormatterTemp.Serialize(LeafMemoryStreamTemp, LeafDataTableTemp);
LeafDataTableByteTemp = LeafMemoryStreamTemp.GetBuffer();

然后从Byte数组转换回DataTable类可以这样
byte[] LeafDataTableByteTemp;
DataTable LeafData;
BinaryFormatter LeafBinaryFormatterTemp = new BinaryFormatter();
LeafData = (DataTable)LeafBinaryFormatterTemp.Deserialize(new MemoryStream(LeafDataTableByteTemp));

那么假如我自定义一个类
class LeafClassDataPack
{
public string a;
public int b;
public byte[] c;
}
我如何把这个类转换成二进制数据byte[]
又如何从二进制数据byte[]转换回这个类呢

要序列化一个对象,首先设置该对象类是可以序列化的,然后序列化为二进制或XML数据。
你的方法是没问题的,goorcome说得对,只能序列化实例。另外你的类声明没有说明可序列化。

[Serializable()]
class LeafClassDataPack
{
public string a;
public int b;
public byte[] c;
}
下面是测试代码:
private void button3_Click(object sender, EventArgs e)
{
LeafClassDataPack lcdp= DeserializeMyClass(SerializeMyClass());
Text = lcdp.a;
}
private byte[] SerializeMyClass()
{
LeafClassDataPack leafClassDataPack=new LeafClassDataPack();
leafClassDataPack.a = "test";
byte[] leafMyClassByteTemp;
MemoryStream leafMemoryStreamTemp = new MemoryStream();
BinaryFormatter leafBinaryFormatterTemp = new BinaryFormatter();
leafBinaryFormatterTemp.Serialize(leafMemoryStreamTemp, leafClassDataPack);