读书人

Dataset反序列化被阉解决方法

发布时间: 2012-09-10 22:20:12 作者: rapoo

Dataset反序列化被阉

C# code
    [Serializable]    public partial class MyDataSet : DataSet, ISerializable    {        public MyDataSet()        { }        protected MyDataSet(SerializationInfo info, StreamingContext context)          {}    }        private void btn反序列化_Click(object sender, EventArgs e)        {                  byte[] buffer = null;            IFormatter formater = new BinaryFormatter();            MemoryStream ms = new MemoryStream();            MemoryStream fs = new MemoryStream();            DataTable dt=dsSYS_TestM.Tables[0].Copy();            MyDataSet md = new MyDataSet();            md.Tables.Add(dt);            formater.Serialize(ms, md);            buffer = new byte[(int)ms.Length];            ms.Position = 0;            ms.Read(buffer, 0, (int)ms.Length);            ms.Close();            IFormatter bina = new BinaryFormatter();            MemoryStream ms1 = new MemoryStream(buffer);            MyDataSet d = (MyDataSet)bina.Deserialize(ms1);            ms1.Close();        }

如上代码,最后 d 为空,反序列化不成功,请大家帮忙~

[解决办法]
请用ms.ToArray()来获取buffer,否则在Read方法调用前,先flush,让数据立即写入。
[解决办法]
不是很明白……学习
[解决办法]
不懂!希望有高手来帮你解决

读书人网 >C#

热点推荐