我有一个包含一些数据表的数据集。我可以成功二进制序列化数据集。
如果我尝试单独序列化其中一个 DataTable,我会得到 NullReferenceException。
如果我制作 DataTable 的副本,则该副本可以很好地序列化。
有人知道我在做什么错吗?
此代码重现了该问题:
internal class Program
{
private static void Main(string[] args)
{
System.String xml =
"<CR><AN>543</AN><Br>XYZ</Br><Id>888</Id><M>123456</M><EVT>DATA</EVT><data><telephony><S>2012-01-11T14:01:54.9571247Z</S><CID>100000</CID><reason>test</reason></telephony></data></CR>";
var ds = new System.Data.DataSet();
using (var stringReader = new System.IO.StringReader(xml))
{
ds.ReadXml(stringReader);
}
//This works.
var serializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
using (var memStream = new System.IO.MemoryStream())
{
serializer.Serialize(memStream, ds);
}
System.Data.DataTable dt0 = ds.Tables[0];
//Serializing a copy works
System.Data.DataTable copy = dt0.Copy();
using (var memStream = new System.IO.MemoryStream())
{
serializer.Serialize(memStream, copy);
}
//Serializing the original fails with a NULL Reference Exception
using (var memStream = new System.IO.MemoryStream())
{
serializer.Serialize(memStream, dt0);
}
}
}