13 Nov Premier pas avec la sérialisation
Aujourd’hui, je vais vous faire découvrir la sérialization binaire et xml.
1 – Qu’est-ce que la sérialisation ?
La sérialisation consiste à encoder l’état d’un objet en mémoire dans un flux de données.
2 – La sérialisation binaire
Pour commencer, il faut importer les librairies suivantes :
Imports System.IO Imports System.Runtime.Serialization.Formatters.Binary
Dans l’exemple suivant, nous allons créer une classe comportant 2 propriétés, une fonction publique permettant la sauvegarde de l’objet en cours, et une fonction partagée permettant la lecture d’un objet déjà sérialisé.
<Serializable()> _ Public Class MaClasse Private _chaine1 As String Public Property Chaine1 As String Get Return _chaine1 End Get Set(ByVal value As String) _chaine1 = value End Set End Property Private _chaine2 As String Public Property Chaine2 As String Get Return _chaine2 End Get Set(ByVal value As String) _chaine2 = value End Set End Property Public Shared Function Load(ByVal filename As String) As MaClasse Dim maClasseObj As MaClasse = Nothing Dim serializer As New BinaryFormatter() Dim fs As New IO.FileStream(filename, FileMode.Open, FileAccess.Read) maClasseObj = serializer.Deserialize(fs) fs.Close() Return maClasseObj End Function Public Sub Save(ByVal filename As String) Dim serializer As New BinaryFormatter() Dim fs As New IO.FileStream(filename, FileMode.Create, FileAccess.Write) serializer.Serialize(fs, Me) fs.Close() End Sub End Class
Pour son utilisation, c’est simple :
'Sauvegarde de l'objet. Dim obj1 as new MaClasse() obj1.Chaine1 = "chaine 1" obj1.Chaine2 = "chaine 2" obj1.Save("C:\test.dat") 'Lecture d'un objet sérialisé. Dim obj2 as MaClasse = MaClasse.Load("C:\test.dat")
3 – La sérialisation XML
Pour la sérialisation XML, globalement c’est la même chose, il faut juste utiliser un objet différent. Reprenons le même exemple.
Imports System.IO Imports System.Xml.Serialization <Serializable()> _ Public Class MaClasse Private _chaine1 As String Public Property Chaine1 As String Get Return _chaine1 End Get Set(ByVal value As String) _chaine1 = value End Set End Property Private _chaine2 As String Public Property Chaine2 As String Get Return _chaine2 End Get Set(ByVal value As String) _chaine2 = value End Set End Property Public Shared Function Load(ByVal filename As String) As MaClasse Dim maClasseObj As MaClasse = Nothing Dim serializer As New XmlSerializer(GetType(MaClasse)) Dim fs As New IO.FileStream(filename, FileMode.Open, FileAccess.Read) maClasseObj = serializer.Deserialize(fs) fs.Close() Return maClasseObj End Function Public Sub Save(ByVal filename As String) Dim serializer As New XmlSerializer(GetType(MaClasse)) Dim fs As New IO.FileStream(filename, FileMode.Create, FileAccess.Write) serializer.Serialize(fs, Me) fs.Close() End Sub End Class
Et voila ! Plutôt simple non ?
Pas de commentaire