当前位置: 代码迷 >> VB Dotnet >> 反序列化包含不同类型的arraylist时没法一次返回整个arraylist
  详细解决方案

反序列化包含不同类型的arraylist时没法一次返回整个arraylist

热度:138   发布时间:2016-04-25 02:02:57.0
反序列化包含不同类型的arraylist时无法一次返回整个arraylist
rt 结构定义如下:.

   <Serializable>
    Public Structure Person
        Dim Name As String
        Dim Age As Integer
        Dim Income As Decimal
 

写入代码如下:



Dim BinFormatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
 Dim fs As New FileStream("c:\temp\text.txt", FileMode.Create)
        Dim P As New Person
        Dim Persons As New ArrayList

        P = New Person
        P.Name = "Person 1"
        P.Age = 35
        P.Income = 32000
        Persons.Add(P)
        P = New Person
        P.Name = "Person 2"
        P.Age = 50
        P.Income = 72000
        Persons.Add(P)
        BinFormatter.Serialize(fs, Persons)
        Dim abc As String = "testtest"
        Persons.Add(abc)
        BinFormatter.Serialize(fs, Persons)

读取代码如下:

        Dim obj1 As Object

        Dim Persons1 As New ArrayList
        Do
            obj1 = BinFormatter.Deserialize(fs)
            If obj1.GetType Is GetType(ArrayList) Then
                Persons1 = obj1
            End If
        Loop While fs.Position < fs.Length - 1

按理说第一次进行deserialize方法就应该将包含两个person结构与一个string的arraylist读取出来了啊,为什么实际运行时是首先读出包含两个person结构的arraylist,随后第二次读出的是包含两个person结构与一个string的arraylist,百思不得其解,求帮助~~
------解决思路----------------------
晕死
要么你统一add完之后再序列化
要么第一次序列化之后,add之前,先clear一下

你第一次先把Persons序列化了
然后没清空,又继续往里面放东西,
第二次把一个更大的Persons再次序列化,数据不就重复了
  相关解决方案