ASPNET揭秘笔记之九

使用序列化

     序列化(Serialization)是把一个对象或一组对象转换成可持久保存形态的过程。比如可以把一个对象序列化到文件系统或数据库表中。在对喜爱那个被保存到持久稳固的介质后,可以反序列化(deserialize)该对象,以便恢复它。


     序列化可以在任何时刻即使完成地保存对象的状态,当序列化一个对象时,也可以序列化其属性值。比如,如果序列化ArrayList到硬盘,那么ArrayList本身及其所有元素都被保存到硬盘了。

     

     .Net框架包括如下可以用来序列化和反序列化对象的类。

     BinaryFormatter--可以把对象序列化和反序列化成二进制格式。

     SoapFormatter--可以把对象序列化和反序列化成Soap格式。

     XMLSerializer--可以把对象序列化和反序列化成XML格式。

 

使用二进制序列化:

     BinaryFormatter类具有两个重要的方法,Serialize和DeSerialize。要序列化一个对象,就要把一个流(Stream)的实例和该对象传递给Serialize方法。要反序列化一个对象,就要把流的实例传递给Deserialize方法。

     BF不嫩序列化诸如DataReader或TextBox控件这样的类。一个类必须具有Serializable属性或者实现了ISerializable接口,才能被序列化。

 

序列化一个数组

 

    Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
        
Dim colAL As ArrayList
        
Dim objFS As FileStream
        
Dim objBF As BinaryFormatter

        colAL 
= New ArrayList
        colAL.Add(
"milk")
        colAL.Add(
"oranges")
        colAL.Add(
"beer")

        objFS 
= New FileStream(MapPath("myarr.data"), FileMode.Create)
        objBF 
= New BinaryFormatter
        objBF.Serialize(objFS, colAL)
        objFS.Close()
    
End Sub

 

 

反序列化数组

 

    Private Sub LinkButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton2.Click
        
Dim colAL As ArrayList
        
Dim objFS As FileStream
        
Dim objBF As BinaryFormatter

        
Dim strItem As String

        objFS 
= New FileStream(MapPath("myarr.data"), FileMode.Open)
        objBF 
= New BinaryFormatter

        colAL 
= CType(objBF.Deserialize(objFS), ArrayList)
        objFS.Close()

        
For Each strItem In colAL
            
Me.lblMessage.Text &= "<li>" & strItem.Trim
        
Next
    
End Sub
posted @ 2008-07-22 15:10  年华倒影  阅读(176)  评论(0)    收藏  举报