Serializzare/Deserializzare una classe in VB.NET
Spesso ci occorre salvare in un file una istanza di una classe in modo tale poterla caricare successivamente.
In Visual Basic .NET è possibile far ciò semplicemente serializzando e deserializzando all'occorrenza l'istanza della classe.
Nell'esempio allegato a questo articolo verrà serializzata una lista di classi "Persona"; di seguito il codice sorgente della classe:
Public Class Persona Private _nome As String = "" Private _cognome As String = "" Private _dataNascita As Date = Now Public Sub New() End Sub Public Sub New(ByVal strNome As String, ByVal strCognome As String, ByVal dDataNascita As Date) _nome = strNome _cognome = strCognome _dataNascita = dDataNascita End Sub Public Property Nome() As String Get Return _nome End Get Set(ByVal value As String) _nome = value End Set End Property Public Property Cognome() As String Get Return _cognome End Get Set(ByVal value As String) _cognome = value End Set End Property Public Property DataNascita() As Date Get Return _dataNascita End Get Set(ByVal value As Date) _dataNascita = value End Set End Property End Class |
La funzione che permette la serializzazione è la seguente:
Public Sub SalvaPersone() Try If _NomeFile <> "" Then Dim writer As New System.Xml.Serialization.XmlSerializer(GetType(List(Of Persona))) Dim file As New System.IO.StreamWriter(_NomeFile) writer.Serialize(file, _ListaPersone) file.Close() End If Catch ex As Exception MsgBox(ex.ToString, MsgBoxStyle.Critical) End Try End Sub |
La funzione analoga che invece deserializza è:
Public Sub CaricaPersone() Try If IO.File.Exists(_NomeFile) = True Then Dim reader As New System.Xml.Serialization.XmlSerializer(GetType(List(Of Persona))) Dim file As New System.IO.StreamReader(_NomeFile) _ListaPersone = CType(reader.Deserialize(file), List(Of Persona)) file.Close() End If Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try AggiornaLista() End Sub |
Dimenticavo,_ListaPersone è così definito:
Private _ListaPersone As New List(Of Persona) |
Sicuramente, scaricando l'esempio, tutto sarà più chiaro.
