Hey Leute,
ich Programmiere nun wieder ein bischel mit VB und bin bislang immer gut selbst zurecht gekommen, allerdings stehe ich nun vor einem Problem das ich irgendwie nicht selbst lösen kann und hoffe das ihr mir Helfen könnt.
Ich habe eine Serialisierbare Klasse die von Dictionary(Of K, V) erbt. Das Serialisieren und Deseralisieren funktioniert auch wunderbar, wenn es externe Methoden sind. Nun möchte ich die Methoden allerdings in der Klasse selbst haben, damit ich einfach MeineKlasse.Save(Filename) aufrufen kann.
Allerdings weiß ich nun nicht wenn ich das deserialisierte Object von meiner Klasse habe, wie es es ihr selbst zuordne.
funktioniert leider nicht.
Hier meine ganze Klasse (bzw. das was wichtig ist davon)
Spoiler anzeigen
ich Programmiere nun wieder ein bischel mit VB und bin bislang immer gut selbst zurecht gekommen, allerdings stehe ich nun vor einem Problem das ich irgendwie nicht selbst lösen kann und hoffe das ihr mir Helfen könnt.
Ich habe eine Serialisierbare Klasse die von Dictionary(Of K, V) erbt. Das Serialisieren und Deseralisieren funktioniert auch wunderbar, wenn es externe Methoden sind. Nun möchte ich die Methoden allerdings in der Klasse selbst haben, damit ich einfach MeineKlasse.Save(Filename) aufrufen kann.
Allerdings weiß ich nun nicht wenn ich das deserialisierte Object von meiner Klasse habe, wie es es ihr selbst zuordne.
funktioniert leider nicht.
Hier meine ganze Klasse (bzw. das was wichtig ist davon)
VB.NET-Quellcode
- <Serializable()> _
- Public Class StoreCollection
- Inherits Dictionary(Of String, StoreItem)
- Implements ISerializable
- Public Sub New()
- MyBase.New()
- End Sub
- Public Sub New(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext)
- MyBase.New(info, context)
- End Sub
- Private Sub Save(ByVal Filename As String)
- Using fs As New FileStream(Filename, FileMode.Create)
- Dim bf As New BinaryFormatter()
- bf.Serialize(fs, Me)
- fs.Close()
- End Using
- End Sub
- Private Sub Open(ByVal Filename As String)
- If File.Exists(Filename) Then
- Using fs As New FileStream(Filename, FileMode.Open)
- Dim bf As New BinaryFormatter()
- ' das hier funktioniert leider so nicht :-(
- Me = DirectCast(bf.Deserialize(fs), StoreCollection)
- fs.Close()
- End Using
- End If
- End Sub
- End Class