Expliquez la sérialisation et la désérialisation en C #

Expliquez la sérialisation et la désérialisation en C #
Sérialisation fait référence à l'acte de transformer un objet en un format qui peut être transmis ou stocké, tandis que la désérialisation est le processus de conversion des données sérialisées à sa forme initiale.

Cet article expliquera sérialisation et désérialisation en C # avec un exemple.

Sérialisation en C #

Pour convertir un objet en un format qui peut être stocké ou transmis sur une sérialisation de réseau est utilisé et ce format peut être un format XML, un format binaire ou tout autre format. Sérialisation est utilisé pour le stockage et la transmission des données, et c'est un concept important dans la programmation C #.

Prenons un exemple pour comprendre la sérialisation en C #, supposons que nous ayons un "Employé" classe qui contient le nom, l'identification et le salaire de l'employé:

Utilisation du système;
Utilisation du système.IO;
Utilisation du système.Durée.Sérialisation;
Utilisation du système.Durée.Sérialisation.JSON;
[Datacontract]
employé de classe publique

[DataMember]
Nom de chaîne publique get; ensemble;
[DataMember]
public int id get; ensemble;
[DataMember]
Double salaire public get; ensemble;

programme de classe

statique void main (String [] args)

Employee EMP = nouvel employé name = "mark", id = 005, salaire = 10000;
DataContractSerializer Serializer = new DataContractSerializer (typeof (employé));
Utilisation (memmorStream stream = new MemoryStream ())

sérialiseur.WriteObject (Stream, EMP);
octet [] SerializedData = Stream.ToArray ();
Console.WriteLine ("Données sérialisées:");
Console.Writeline (BitConverter.Tostring (SerializedData).Remplacer("-", ""));
// Écrivez les données sérialisées dans un fichier en utilisant FileStream
String FileName = "Data sérialisé.poubelle";
chaîne filepath = chemin.Combiner (environnement.CurrentDirectory, nom de fichier);
Utilisation (filestreamFileStream = new FileStream (filepath, fileMode.Créer))

filestre.Écrire (SerializedData, 0, SerializedData.Longueur);

Console.WriteLine ($ "Données sérialisées enregistrées dans le fichier: filepath");


Le code C # ci-dessus montre comment sérialiser un objet d'une classe personnalisée nommée "Employé" en utilisant le DatacontractSerializer classe du Système.Durée.Sérialisation espace de noms. La classe a trois propriétés: nom, ID et salaire, qui sont tous marqués par le Billet de données attribut pour indiquer qu'ils doivent être inclus dans le processus de sérialisation.

En main, une instance du Employé la classe est créée et ses propriétés sont définies avec des données d'échantillons et le DatacontractSerializer est ensuite utilisé pour sérialiser l'objet en un tableau d'octets, qui est enregistré dans un fichier à l'aide d'un filestream. Le chemin du fichier est spécifié à l'aide du Chemin.Combiner et Environnement.Répertoire actuel() Fonctions, puis les données sérialisées s'affichent dans la console avec le chemin du fichier:

Désérialisation en c #

Désérialisation est le processus de conversion de données sérialisées, généralement stockées dans un fichier, ou transmises sur un réseau, dans sa forme d'origine. En C #, le processus de désérialisation implique la création d'un objet à partir de sa forme sérialisée, qui peut être réalisée en utilisant diverses classes intégrées telles que la DatacontractSerializer ou la XMLSerializer.

Prenons un exemple pour comprendre la désérialisation en C # et utilisons le même fichier sérialisé que nous avons créé précédemment et le désérialiser, ci-dessous le code pour cela:

Utilisation du système;
Utilisation du système.IO;
Utilisation du système.Durée.Sérialisation;
Utilisation du système.Durée.Sérialisation.JSON;
[Datacontract]
employé de classe publique

[DataMember]
Nom de chaîne publique get; ensemble;
[DataMember]
public int id get; ensemble;
[DataMember]
Double salaire public get; ensemble;

programme de classe

statique void main (String [] args)

DataContractSerializer Serializer = new DataContractSerializer (typeof (employé));
// Lire les données sérialisées du fichier à l'aide de FileStream
String FileName = "Data sérialisé.poubelle";
chaîne filepath = chemin.Combiner (environnement.CurrentDirectory, nom de fichier);
Utilisation (FileStreamReadStream = New FileStream (FilePath, FileMode.Ouvrir))

Sérialiseur désérialisé des employés = (employé).ReadObject (readStream);
Console.WriteLine ($ "Employé désérialisé: nom - DeserializedEemp.Nom, id - DeserializedEmp.Id, salaire - DeserializedEmp.Salaire");


Le code C # ci-dessus utilise le DatacontractSerializer classe pour désérialiser un objet «employé» qui a été précédemment sérialisé et enregistré dans un fichier binaire. La classe des employés est définie avec Billet de données Attributs sur ses propriétés pour indiquer que ceux-ci doivent être sérialisés / désérialisés. Le principal crée une instance du sérialiseur et ouvre le fichier binaire à l'aide d'un FileStream et la fonction readObject () du sérialiseur est ensuite utilisée pour lire les données sérialisées et créer un nouvel objet employé. L'objet employé est ensuite imprimé sur la console pour confirmer qu'il a été désérialisé avec succès.

Dernières pensées

En programmation C #, sérialisation et désérialisation Les concepts vitaux sont-ils utilisés pour le stockage et la transmission des données. Sérialisation implique la transformation d'un objet en un format adapté au stockage ou à la transmission, tandis que désérialisation Implique le processus inverse de convertir les données sérialisées à sa forme d'origine. Dans l'exemple de code fourni, le DatacontractSerializer La classe est utilisée pour sérialiser une instance de la classe des employés en un tableau d'octets, qui est ensuite enregistré dans un fichier. Le désérialisation Le processus consiste à lire les données sérialisées du fichier et à utiliser le même sérialiseur pour le désérialiser dans une instance de la classe des employés.