| Dieses Beispiel zeigt, wie man Instanzen von Klassen, d.h. Objekte, serialisieren kann. Bei der Serialisierung werden die Daten in einen Stream umgewandelt, der dann problemlos in eine Datei geschrieben oder das Netz geschickt werden kann. Anschliessend kann eine Deserialsierung erfolgen, wobei das Objekt so, wie es gespeichert wurde, wiederhergestellt wird. Hier werden Benutzerinformationen in einer Instanz der Klasse CPerson gehalten, die aus einer Datei geladen bzw. in eine Datei exportiert werden können. |
| .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008 | |
|
Option Explicit On
Option Strict On
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports System.Runtime.Serialization.Formatters.Binary
Public Module modMain
Private m_persUser As CPerson
Private m_strDataFileName As String = _
Application.StartupPath & "\settings.dat"
Public Sub Main()
Restore()
Console.WriteLine("Tool zum Ändern der " & _
"Benutzerinformationen")
Console.WriteLine("Person mit Namen ""{0}""" & _
" ist aktiv.", m_persUser.Name)
Console.Write("Geben Sie den neuen Namen ein: ")
m_persUser.Name = Console.ReadLine()
Console.WriteLine("Person hat nun den Namen " & _
"""{0}"".", m_persUser.Name)
Save()
Console.WriteLine("Person gespeichert, " & _
" Enter beendet das Programm.")
Console.ReadLine()
End Sub
Private Sub Save()
Dim fs As New FileStream(m_strDataFileName, _
FileMode.OpenOrCreate)
Dim bf As New _
BinaryFormatter()
bf.Serialize(fs, m_persUser)
fs.Close()
End Sub
Private Sub Restore()
Try
Dim fs As New FileStream(m_strDataFileName, _
FileMode.Open)
Dim bf As New BinaryFormatter()
m_persUser = CType(bf.Deserialize(fs), CPerson)
fs.Close()
Catch
m_persUser = New CPerson()
End Try
End Sub
<Serializable()> _
Private Class CPerson
Public Name As String
Public Age As Integer
Public Married As Boolean
Public Knowledge As Knowledge
End Class
<Serializable()> _
Private Structure Knowledge
Public VB As Boolean
Public CSharp As Boolean
End Structure
End Module | |