vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Serialisieren von Listen mit MemoryStream 
Autor: keco
Datum: 14.09.09 15:03

Hallo,

ich habe eine Auflistung von Objekten, die ich gerne serialisieren möchte. Also ich möchte Daten in eine List(Of Object) kopieren und diese serialisieren und den daraus resultierenden Text im Programm weiter verarbeiten. Beim Deserialisieren möchte ich aus den Text wieder die List(Of Object) haben. Wie kann man das am Besten machen? Ich wollte das über den MemoryStream lösen, aber da erhalte ich beim deserialisieren eine Exception. Hier mal mein Code:
   Public Function Serialize(ByVal items As ICollection) As String
      Dim ret As String = String.Empty
      Dim list As New List(Of Object)
 
      For Each i In items
         list.Add(i)
      Next
 
      Dim ms As New IO.MemoryStream()
      Dim formatter As New _
        Runtime.Serialization.Formatters.Binary.BinaryFormatter
 
      Try
         formatter.Serialize(ms, list)
         ret = Convert.ToBase64String(ms.ToArray)
 
      Catch ex As Exception
         Debug.WriteLine("Fehler: " & ex.Message)
      Finally
         ms.Close()
      End Try
 
      Return ret
   End Function
Ich übergebe also der Funktion eine Auflistung, die als nicht-serialisierbar gekennzeichnet ist. Also übernehme ich alle Items dieser Collection in eine List(Of Object) auf und serialisiere diese in ein MemoryStream. Ich nutze kein FileStream, weil ich den Inhalt als String im Programm weiter verarbeiten möchte und somit nicht den Umweg über eine Datei gehen muss.

Zum Laden verwende ich folgenden Code:
   Public Function Deserialize(ByVal text As String) As List(Of Object)
      Dim list As New List(Of Object)
      Dim data As Byte() = System.Text.Encoding.UTF8.GetBytes(text)
      Dim ms As New IO.MemoryStream
 
      ms.Write(data, 0, data.Length)
      ms.Position = 0
 
      Try
         Dim formatter As New _
           System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
         list = DirectCast(formatter.Deserialize(ms), List(Of Object))
 
      Catch ex As Exception
         Debug.WriteLine("Fehler: " & ex.Message)
      Finally
         ms.Close()
      End Try
 
      Return list
   End Function
Aber hier bekomme ich eine Exception:
Eine Ausnahme (erste Chance) des Typs "System.Runtime.Serialization.SerializationException" ist in mscorlib.dll aufgetreten.
Fehler: Der Eingabestream hat kein gültiges binäres Format. Die Startinhalte (in Bytes) sind: 41-41-45-41-41-41-44-2F-2F-2F-2F-2F-41-51-41-41-41 ...

Wo liegt in dem Code der Fehler?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Serialisieren von Listen mit MemoryStream3.334keco14.09.09 15:03
Re: Serialisieren von Listen mit MemoryStream1.379ModeratorDaveS14.09.09 15:12
Re: Serialisieren von Listen mit MemoryStream1.248keco14.09.09 15:32

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel