Sérialisation et désérialisation en C# avec exemple

Sérialisation et désérialisation en C#

Le concept de sérialisation et de désérialisation est utilisé chaque fois que des données relatives à des objets doivent être envoyées d'une application à une autre. La sérialisation est utilisée pour exporter les données d'application dans un fichier. L'application de destination utilise ensuite la désérialisation pour extraire les données de l'application en vue d'une utilisation ultérieure.

La sérialisation est un concept dans lequel les objets de classe C# sont écrits ou sérialisés dans des fichiers. Disons que vous aviez une classe C# appelée Tutorial. Et la classe a 2 propriétés ID et nom des didacticiels.

La sérialisation peut être utilisée pour écrire directement les propriétés de données de la classe Tutorial dans un fichier. La désérialisation est utilisée pour lire les données du fichier et reconstruire l'objet Tutorial.

Comment sérialiser un objet en C#

Regardons un exemple de la façon dont nous pouvons y parvenir.

Dans notre exemple, nous allons effectuer les étapes de haut niveau ci-dessous dans le code

  1. Créez une classe appelée Tutorial qui possède 2 propriétés, à savoir ID et Name
  2. Nous allons ensuite créer un objet à partir de la classe et attribuer une valeur de « 1 » à la propriété ID et une valeur de « .Net » à la propriété name.
  3. Nous utiliserons ensuite la sérialisation pour sérialiser l'objet ci-dessus dans un fichier appelé Exemple.txt
  4. Enfin, nous utiliserons la désérialisation pour désérialiser l'objet du fichier et afficher les valeurs dans la console.


Entrez le code ci-dessous dans le fichier program.cs de l'application console.

Étape 1) Ajoutez la classe.

La première étape consiste à ajouter la classe qui sera utilisée pour la sérialisation

Sérialiser un objet en C#

Explication du code : -

  1. La classe qui doit être sérialisée doit avoir l'attribut [Serialisisable]. Il s'agit d'un mot-clé en C#. Ce mot-clé est ensuite attaché à la classe Tutorial. Si vous ne mentionnez pas cet attribut, vous obtiendrez une erreur lorsque vous tenterez de sérialiser la classe.
  2. Vient ensuite la définition de la classe qui sera sérialisée. Ici, nous définissons une classe appelée « Tutoriel » et fournissons 2 propriétés, l'une est « ID » et l'autre est « Nom ».

Étape 2) Créez l'objet.

Dans cette étape, nous allons d'abord créer l'objet de la classe Tutorial et le sérialiser dans le fichier appelé Exemple.txt

Sérialiser un objet en C#

Explication du code : -

  1. Tout d’abord, nous créons un objet de la classe Tutorial. Nous attribuons ensuite la valeur « 1 » à ID et « .net » à la propriété name.
  2. Nous utilisons ensuite la classe formateur qui permet de sérialiser ou de convertir l'objet au format binaire. Les données du fichier en sérialisation se font au format binaire. Ensuite, nous créons un objet flux de fichiers. L'objet file stream est utilisé pour ouvrir le fichier Exemple.txt à des fins d'écriture. Les mots-clés FileMode.Create et FileMode.Write sont utilisés pour mentionner spécifiquement que le fichier doit être ouvert à des fins d'écriture.
  3. Enfin, nous utilisons la méthode Serialize pour transférer les données binaires vers le fichier. On ferme ensuite le flux, puisque l'écriture opération est complet.

Étape 3) Utilisez la désérialisation.

Enfin pour nous assurer que les données sont présentes dans le fichier, nous utilisons la désérialisation pour désérialiser l'objet du fichier.

Sérialiser un objet en C#

using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  [Serializable]
  class Tutorial
  {
  public int ID;
  public String Name;
   static void Main(string[] args)
   {
    Tutorial obj = new Tutorial();
    obj.ID = 1;
    obj.Name = ".Net";

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);

    formatter.Serialize(stream, obj);
    stream.Close();

    stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);
    Tutorial objnew = (Tutorial)formatter.Deserialize(stream);

    Console.WriteLine(objnew.ID);
    Console.WriteLine(objnew.Name);

    Console.ReadKey();
  }
 }
}

Explication du code : -

  1. Nous créons l'objet "courant» pour ouvrir le fichier Exemple.txt en mode lecture seule.
  2. Nous utilisons ensuite la classe du formateur qui permet de désérialiser l'objet, qui est stocké dans le fichier Exemple.txt. L'objet renvoyé est défini sur l'objet objnew.
  3. Enfin, nous affichons les propriétés de l'objet « objnew » à la console en utilisant les propriétés « ID » et « name ».

Lorsque le code ci-dessus est défini et que le projet est exécuté en utilisant Visual Studio, vous obtiendrez le résultat ci-dessous.

Production:-

Sérialiser un objet en C#

Vous pouvez voir dans la sortie ci-dessus que les valeurs du fichier ont été correctement désérialisées et affichées dans la console.

Résumé

La sérialisation est utilisée pour écrire des objets de classe dans des fichiers.

La désérialisation est utilisée pour récupérer les objets du fichier.