当前位置:编程学习 > C#/ASP.NET >>

一个Hashtable序列化进数据库后取出

大家帮忙看看,报错“在分析完成之前就遇到流结尾。”
序列化:
  public bool Serialization(Hashtable hashtable)
    {
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        binaryFormatter.Serialize(ms, hashtable);//内存流二级制序列化
        ms.Position = 0;
        byte[] b = new Byte[ms.Length];
        ms.Read(b, 0, b.Length);
        bool flag = new Product().ss(b);
        ms.Close();
        return flag;

    }

下面是反序列化:
byte[] b = new Product().returnSeirazation();//数据库返回
         System.IO.MemoryStream ms = new System.IO.MemoryStream(b);  
         BinaryFormatter binaryFormatter = new BinaryFormatter(); 
         ms.Position = 0;     
         Items =(Hashtable)binaryFormatter.Deserialize(ms);//报错 在分析完成之前就遇到流结尾。”
         ms.Close(); --------------------编程问答-------------------- 结贴率太低! --------------------编程问答--------------------
        /// <summary>
        /// 序列化发送消息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static byte[] SerializeBinary(object request)
        {
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer =
            new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            System.IO.MemoryStream memStream = new System.IO.MemoryStream();
            serializer.Serialize(memStream, request);

            //byte[] b = memStream.GetBuffer();
            byte[] b = memStream.ToArray();
            memStream.Close();
            return b;
        }

        /// <summary>
        /// 反序列化接收消息
        /// </summary>
        /// <param name="buf"></param>
        /// <returns></returns>
        public static object DeserializeBinary(byte[] buf)
        {
            if (buf == null || buf.Length == 0) return null;
            System.IO.MemoryStream memStream = new System.IO.MemoryStream();
            memStream.Write(buf, 0, buf.Length);
            memStream.Position = 0;
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter deserializer =
            new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            object newobj = deserializer.Deserialize(memStream);
            memStream.Close();
            return newobj;
        }
--------------------编程问答-------------------- 检查序列化文件
 IFormatter ff = new BinaryFormatter();
 stream.Seek(0, SeekOrigin.Begin);  
 object obj = ff.Deserialize(stream);
--------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,