Die Klasse Serialize-Demo serialisiert eine Hashtable und
eine SortedList
Public Class SerializeDemo
'Klasse für die Settingsvariablen (serialisierbar)
<Serializable()> _
Private Class SettingsVariable
Friend _hash As New Hashtable
Friend _list As New SortedList
End Class
'Klassen-Instanz für alle Settingsvariablen
Dim MySettings As New SettingsVariable
'Übergabe der Referenzen per Properties
Public Property Hash() As Hashtable
Get
Return MySettings._hash
End Get
Set(value As Hashtable)
MySettings._hash = value
End Set
End Property
Public Property SList() As SortedList
Get
Return MySettings._list
End Get
Set(value As SortedList)
MySettings._list = value
End Set
End Property
'Serialisierungs-Routinen
Public Function Serialize _
(Optional ByVal filename As String = "") As Boolean
If String.IsNullOrEmpty(filename) Then
filename = IO.Path.Combine _
(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationDa_
ta, _
"MySettings.ser")
End If
Try
Using fs As New IO.FileStream(filename, _
IO.FileMode.OpenOrCreate, IO.FileAccess.Write, IO.FileShare.None)
Dim bf As New _
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
bf.Serialize(fs, MySettings)
End Using
Return True
Catch ex As System.Exception
Return False
End Try
End Function
Public Function Deserialize _
(Optional ByVal Filename As String = "") As Boolean
If String.IsNullOrEmpty(Filename) Then
Filename = IO.Path.Combine _
(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationDa_
ta, _
"MySettings.ser")
End If
Try
Using fs As New IO.FileStream(Filename, _
IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
Dim bf As New _
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
MySettings = CType(bf.Deserialize(fs), SettingsVariable)
End Using
Return True
Catch ex As System.Exception
Return False
End Try
End Function
End Class Anwendung:
'Demo-Daten
Dim ht As New Hashtable
ht.Add("key1", "value1")
ht.Add("key2", "value2")
ht.Add("key3", "value3")
Dim sl As New SortedList
sl.Add("lkey3", "lvalue3")
sl.Add("lkey1", "lvalue1")
sl.Add("lkey2", "lvalue2")
'Speichern (z.B. beim Programmende)
Dim ser As New SerializeDemo
ser.Hash = ht
ser.SList = sl
ser.Serialize()
'Listen leeren
ht = Nothing
sl = Nothing
'Laden der Einstellungen (z.B. bei Programm-Init.)
Dim ser2 As New SerializeDemo
ser2.Deserialize()
ht = ser2.Hash
sl = ser2.SList |