Ho due metodi che dovrebbero rispettivamente l'uno salvare e l'altro leggere i dati da un file. I dati sono contenuti in una collezione di oggetti a tipizzazione forte, e vengono salvati mediante serializzazione binaria. Questi sono i rispettivi codici:
e:codice:If Save.ShowDialog = Windows.Forms.DialogResult.OK Then If Save.FilterIndex = 6 Then Dim Serializer As New Runtime.Serialization.Formatters.Binary.BinaryFormatter() Dim Layers As New List(Of Layer) Dim Stream As New IO.FileStream(Save.FileName, IO.FileMode.Create) For Each L As ListViewItem In lstLayers.Items Layers.Add(L.Tag) Next Serializer.Serialize(Stream, Layers) Stream.Close() Else SaveDrawing(Save.FileName) End If End If
L'eccezione riscontrata nel punto indicato è di tipo SerializationExeption, e riporta il seguente testo:codice:If Open.ShowDialog = Windows.Forms.DialogResult.OK Then Dim Serializer As New Runtime.Serialization.Formatters.Binary.BinaryFormatter() Dim Layers As New List(Of Layer) Dim Stream As New IO.FileStream(Open.FileName, IO.FileMode.Open) Layers = Serializer.Deserialize(Stream) '<---------- Errore! Stream.Close() For Each Layer As Layer In Layers Dim L As New ListViewItem L.Text = Layer.Name L.ImageIndex = 0 L.Tag = Layer L.Checked = True lstLayers.Items.Add(L) If Layer.Index > MaxIndex * 10 Then MaxIndex = Layer.Index \ 10 + 2 End If Next End If
"Il flusso di input non è un formato binario valido. Il contenuto iniziale (in byte) è: 89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49-48-44-52-00 ..."
Non capisco dove sia l'errore, dato che la serializzazione NON è fatta a mano, e tutti i tipi sono esplicitamente dichiarati serializzabili. Qualcuno può aiutarmi?

Rispondi quotando
intervento inutile!

