C#中物件的序列化與反序列化

luckeryin發表於2009-06-05

C#中物件的序列化與反序列化,是一項很常用的技術,對於物件的儲存,傳輸等十分有用。

這裡有兩個很實用的序列化與反序列化的方法,是我從網友裡的得到的,介紹給大家。

以下是要用到兩個方法:
        ///   
        ///  序列化為二進位制位元組陣列 
        ///   
        ///  要序列化的物件  
        ///  位元組陣列  
        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(); 
        }
        ///   
        ///  從二進位制陣列反序列化得到物件 
        ///   
        ///  位元組陣列  
        ///  得到的物件  
        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);

相關文章