Ich versuche, eine Liste von Objekten in Datei zu speichern, aber eine Ausnahme ausgelöst wird in den Prozess. Das ist meine Objektklasse:Der Versuch, eine Liste von Objekten zu serialisieren schlägt fehl
<Serializable()>
Public Class FavoritesObject
Private Dset As DataSet
Private Name As String
Private BSource1 As BindingSource
Private Bsource2 As BindingSource
Public Sub New()
' Leave fields empty.
End Sub
Public Sub New(ByVal datset As DataSet, ByVal thename As String, ByVal binsource1 As BindingSource, ByVal binsource2 As BindingSource)
Dset = datset
Name = thename
BSource1 = binsource1
binsource2 = binsource2
End Sub
Public Property Dataset1 As DataSet
Get
Return Dset
End Get
Set(ByVal value As DataSet)
Dset = value
End Set
End Property
Public Property FavoriteName As String
Get
Return Name
End Get
Set(ByVal value As String)
Name = value
End Set
End Property
Public Property BindingSource1 As BindingSource
Get
Return BSource1
End Get
Set(ByVal value As BindingSource)
BSource1 = value
End Set
End Property
Public Property BindingSource2 As BindingSource
Get
Return Bsource2
End Get
Set(ByVal value As BindingSource)
Bsource2 = value
End Set
End Property
End Class
Hier meine Funktionen für die Serialisierung und Deserialisierung sind:
Public Sub WriteToBinaryFile(serializationFile As String, List As List(Of FavoritesObject))
Using stream As Stream = File.Open(serializationFile, FileMode.Create)
Dim bformatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
bformatter.Serialize(stream, List)
End Using
End Sub
Public Function ReadFromBinaryFile(serializationFile As String)
Using stream As Stream = File.Open(serializationFile, FileMode.Open)
Dim bformatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Dim favorites As List(Of FavoritesObject) = DirectCast(bformatter.Deserialize(stream), List(Of FavoritesObject))
Return favorites
End Using
End Function
Wenn ich versuche, meine Liste der Objekte serialisieren ich die folgende Ausnahme ausgelöst erhalten:
Eine nicht behandelte Ausnahme vom Typ 'System.Runtime.Serialization.SerializationException' ist in mscorlib.dll aufgetreten. Weitere Informationen: Geben Sie 'System.Windows.Forms.BindingSource' in Assembly 'System ein. Windows.Forms, Version = 4.0.0.0, Kultur = neutral, PublicKeyToken = b77a5c561934e089 'ist nicht als serialisierbar gekennzeichnet.
Ich bin mit Serialisierung wirklich nicht vertraut und versuche es zu lernen. Kann jemand bitte etwas Licht auf mein Problem werfen und eine mögliche Lösung?
Ist das nicht offensichtlich von der Ausnahmemeldung, dass 'BindingSource' nicht soll (und nicht kann) serialisiert werden –
Die Antwort unten gibt die direkte technische Lösung. Das größere Problem ist Ihr Entwurf, eine Domänenentität sollte keinen UI- oder Persistenzcode enthalten. –
@HenkHolterman Dachte nicht, danke. Im Nachhinein gab es keinen Grund, sie so zu lagern, da sie im laufenden Betrieb erstellt werden können. –