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:
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
e:
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
L'eccezione riscontrata nel punto indicato è di tipo SerializationExeption, e riporta il seguente testo:
"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?