C # -Serialisierung & Deserialisierung mit Beispiel

Anonim

Das Konzept der Serialisierung und Deserialisierung wird immer dann verwendet, wenn Daten zu Objekten von einer Anwendung an eine andere gesendet werden müssen. Die Serialisierung wird verwendet, um Anwendungsdaten in eine Datei zu exportieren. Die Zielanwendung verwendet dann die Deserialisierung, um die Daten aus der Anwendung zur weiteren Verwendung zu extrahieren.

Serialisierung ist ein Konzept, bei dem Objekte der C # -Klasse in Dateien geschrieben oder serialisiert werden. Angenommen, Sie hatten eine C # -Klasse namens Tutorial. Und die Klasse hat zwei Eigenschaften: ID und Name des Tutorials.

Durch Serialisierung können die Dateneigenschaften der Tutorial-Klasse direkt in eine Datei geschrieben werden. Die Deserialisierung wird verwendet, um die Daten aus der Datei zu lesen und das Tutorial-Objekt erneut zu erstellen.

Schauen wir uns ein Beispiel an, wie wir dies erreichen können.

In unserem Beispiel führen wir die folgenden allgemeinen Schritte im Code aus

  1. Erstellen Sie eine Klasse namens Tutorial mit zwei Eigenschaften, nämlich ID und Name
  2. Anschließend erstellen wir ein Objekt aus der Klasse und weisen der ID-Eigenschaft den Wert "1" und der Namenseigenschaft den Wert ".Net" zu.
  3. Wir werden dann die Serialisierung verwenden, um das obige Objekt in eine Datei namens Example.txt zu serialisieren
  4. Schließlich verwenden wir die Deserialisierung, um das Objekt aus der Datei zu deserialisieren und die Werte in der Konsole anzuzeigen.

Geben Sie den folgenden Code in die Datei program.cs der Konsolenanwendung ein.

Schritt 1) Der erste Schritt besteht darin, die Klasse hinzuzufügen, die für die Serialisierung verwendet wird

Code Erläuterung: -

  1. Die Klasse, die serialisiert werden muss, muss das Attribut [Serializable] haben. Dies ist ein Schlüsselwort in C #. Dieses Schlüsselwort wird dann an die Tutorial-Klasse angehängt. Wenn Sie dieses Attribut nicht erwähnen, wird beim Versuch, die Klasse zu serialisieren, eine Fehlermeldung angezeigt.
  2. Als nächstes folgt die Definition der Klasse, die serialisiert wird. Hier definieren wir eine Klasse namens "Tutorial" und stellen zwei Eigenschaften bereit, eine ist "ID" und die andere ist "Name".

Schritt 2) In diesem Schritt erstellen wir zuerst das Objekt der Tutorial-Klasse und serialisieren es in die Datei Example.txt

Code Erläuterung: -

  1. Zuerst erstellen wir ein Objekt der Tutorial-Klasse. Wir weisen dann der ID den Wert "1" und der Eigenschaft name den Wert ".net" zu.
  2. Wir verwenden dann die Formatierungsklasse, mit der das Objekt serialisiert oder in ein Binärformat konvertiert wird. Die Daten in der Datei in Serialisierung werden im Binärformat erstellt. Als Nächstes erstellen wir ein Dateistreamobjekt. Das Dateistream-Objekt wird verwendet, um die Datei Example.txt zum Schreiben zu öffnen. Die Schlüsselwörter FileMode.Create und FileMode.Write werden verwendet, um ausdrücklich zu erwähnen, dass die Datei zum Schreiben geöffnet werden sollte.
  3. Schließlich verwenden wir die Serialize-Methode, um die Binärdaten in die Datei zu übertragen. Wir schließen dann den Stream, da der Schreibvorgang abgeschlossen ist.

Schritt 3) Um sicherzustellen, dass die Daten in der Datei vorhanden sind, verwenden wir die Deserialisierung, um das Objekt aus der Datei zu deserialisieren.

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();}}}

Code Erläuterung: -

  1. Wir erstellen das Objekt "stream", um die Datei Example.txt im schreibgeschützten Modus zu öffnen.
  2. Wir verwenden dann die Formatierungsklasse, die zum Deserialisieren des Objekts verwendet wird, das in der Datei Example.txt gespeichert ist. Das zurückgegebene Objekt wird auf das Objekt objnew gesetzt.
  3. Schließlich zeigen wir der Konsole die Eigenschaften des Objekts "objnew" mit den Eigenschaften "ID" und "name" an.

Wenn der obige Code festgelegt ist und das Projekt mit Visual Studio ausgeführt wird, erhalten Sie die folgende Ausgabe.

Ausgabe:-

Sie können der obigen Ausgabe entnehmen, dass die Werte aus der Datei ordnungsgemäß deserialisiert und in der Konsole angezeigt wurden.

Zusammenfassung

Die Serialisierung wird verwendet, um Klassenobjekte in Dateien zu schreiben.

Die De-Serialisierung wird verwendet, um die Objekte aus der Datei wiederherzustellen.