C#中对象的序列化与反序列化

 

C#中对象的序列化与反序列化,是一项很常用的技术,对于对象的保存,传输等十分有用。

这里有两个很实用的序列化与反序列化的方法,是我从网友里的得到的,介绍给大家。

以下是要用到两个方法:
        ///  <summary> 
        ///  序列化为二进制字节数组 
        ///  </summary> 
        ///  <param  name="request">要序列化的对象 </param> 
        ///  <returns>字节数组 </returns> 
        public 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); 
            return  memStream.GetBuffer(); 
        }
        ///  <summary> 
        ///  从二进制数组反序列化得到对象 
        ///  </summary> 
        ///  <param  name="buf">字节数组 </param> 
        ///  <returns>得到的对象 </returns> 
        public object DeserializeBinary(byte[] buf)
        {
            System.IO.MemoryStream memStream = new MemoryStream(buf);
            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;
        } 


调用的时候,以字体对象为例:
序列化:
byte[] FontByte = SerializeBinary(new Font("宋体", 8));
反序列化:
Font FontItem = (Font)DeserializeBinary(FontByte);

 

<转自> http://www.cnblogs.com/luckeryin/archive/2009/06/05/1496698.html

posted @ 2010-03-11 15:18  火星贝贝  阅读(2198)  评论(0编辑  收藏  举报