既然是托管对象,用Serialization比较简单。条件就是对象要被标志为Serializable,对象的成员,成员的成员也是Serializable的(基本类型都是);[Serializable] class My { int id; string name; string[] addressLines; }
假设对象是Serializable,可以仿照如下操作byte[] bytesStream = null; using(MemoryStream ms = new MemoryStream) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, dataSet); bytesStream = new bytes[ms.Length]; ms.Position = 0; ms.Read(bytesStream, 0, bytesStream.Length); } // 上述是序列化对象dataSet为字节流using(MemoryStream ms = new MemoryStream(bytesStream)) { ms.Position = 0; BinaryFormatter bf = new BinaryFormatter(); DataSet dataSet = (DataSet)bf.Deserialize(ms); } // 上述是反序列字节流为一个DataSet对象
class My
{
int id;
string name;
string[] addressLines;
}
using(MemoryStream ms = new MemoryStream)
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, dataSet);
bytesStream = new bytes[ms.Length];
ms.Position = 0;
ms.Read(bytesStream, 0, bytesStream.Length);
}
// 上述是序列化对象dataSet为字节流using(MemoryStream ms = new MemoryStream(bytesStream))
{
ms.Position = 0;
BinaryFormatter bf = new BinaryFormatter();
DataSet dataSet = (DataSet)bf.Deserialize(ms);
}
// 上述是反序列字节流为一个DataSet对象
你只能一个个字段转换
比如
int a ==》 byte[] aBytes = BitConverter.GetBytes(a);
string b ==> byte[] strBytes = Encoding.Default.GetBytes(b);