C # Serialisatie & Deserialisatie met voorbeeld

Anonim

Het concept van serialisering en deserialisatie wordt gebruikt wanneer gegevens met betrekking tot objecten van de ene applicatie naar de andere moeten worden verzonden. Serialisatie wordt gebruikt om toepassingsgegevens naar een bestand te exporteren. De bestemmingstoepassing gebruikt vervolgens deserialisatie om de gegevens uit de toepassing te extraheren voor verder gebruik.

Serialisatie is een concept waarbij C # -klasseobjecten worden geschreven of geserialiseerd naar bestanden. Stel dat je een C # -les hebt gehad met de naam Tutorial. En de klasse heeft 2 eigenschappen van ID en Tutorials name.

Serialisatie kan worden gebruikt om de gegevenseigenschappen van de klasse Tutorial rechtstreeks naar een bestand te schrijven. Deserialisatie wordt gebruikt om de gegevens uit het bestand te lezen en het Tutorial-object opnieuw te construeren.

Laten we eens kijken naar een voorbeeld van hoe we dit kunnen bereiken.

In ons voorbeeld gaan we de onderstaande stappen op hoog niveau in de code uitvoeren

  1. Maak een klasse met de naam Tutorial die 2 eigenschappen heeft, namelijk ID en Name
  2. We maken dan een object uit de klasse en kennen de waarde "1" toe aan de eigenschap ID en de waarde ".Net" aan de eigenschap name.
  3. We zullen dan serialisering gebruiken om het bovenstaande object te serialiseren naar een bestand met de naam Voorbeeld.txt
  4. Ten slotte zullen we deserialisatie gebruiken om het object uit het bestand te deserialiseren en de waarden in de console weer te geven.

Voer de onderstaande code in het bestand program.cs van de consoletoepassing in.

Stap 1) De eerste stap is het toevoegen van de klasse die zal worden gebruikt voor serialisering

Code Verklaring: -

  1. De klasse die moet worden geserialiseerd, moet het [Serializable] -attribuut hebben. Dit is een trefwoord in C #. Dit sleutelwoord wordt vervolgens aan de lesgroep toegevoegd. Als u dit kenmerk niet vermeldt, krijgt u een foutmelding wanneer u de klasse probeert te serialiseren.
  2. Het volgende is de definitie van de klasse die wordt geserialiseerd. Hier definiëren we een klasse genaamd "Tutorial" en bieden we 2 eigenschappen, de ene is "ID" en de andere is "Name".

Stap 2) In deze stap maken we eerst het object van de klasse Tutorial en serialiseren we dit naar het bestand met de naam Example.txt

Code Verklaring: -

  1. Eerst maken we een object van de klasse Tutorial. Vervolgens wijzen we de waarde "1" toe aan ID en ".net" aan de eigenschap name.
  2. We gebruiken dan de formatterklasse die wordt gebruikt om het object te serialiseren of om te zetten naar een binair formaat. De gegevens in het bestand in serialisatie worden in binair formaat gedaan. Vervolgens maken we een bestandsstroomobject. Het bestandsstroom-object wordt gebruikt om het bestand Voorbeeld.txt te openen voor schrijfdoeleinden. De trefwoorden FileMode.Create en FileMode.Write worden gebruikt om specifiek te vermelden dat het bestand moet worden geopend voor schrijfdoeleinden.
  3. Ten slotte gebruiken we de methode Serialize om de binaire gegevens naar het bestand over te brengen. Vervolgens sluiten we de stream, aangezien de schrijfbewerking is voltooid.

Stap 3) Om er tenslotte voor te zorgen dat de gegevens in het bestand aanwezig zijn, gebruiken we deserialisatie om het object uit het bestand te deserialiseren.

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 Verklaring: -

  1. We maken het object "stream" om het bestand Example.txt te openen in de modus alleen lezen.
  2. Vervolgens gebruiken we de formatterklasse die wordt gebruikt om het object te deserialiseren, dat is opgeslagen in het bestand Example.txt. Het geretourneerde object wordt ingesteld op het object objnew.
  3. Ten slotte tonen we de eigenschappen van het object "objnew" aan de console met behulp van de "ID" en "name" eigenschappen.

Wanneer de bovenstaande code is ingesteld en het project wordt uitgevoerd met Visual Studio, krijgt u de onderstaande uitvoer.

Uitgang: -

U kunt aan de bovenstaande uitvoer zien dat de waarden van het bestand correct zijn gedeserialiseerd en in de console worden weergegeven.

Overzicht

Serialisatie wordt gebruikt om klasseobjecten naar bestanden te schrijven.

De-serialisering wordt gebruikt om de objecten uit het bestand te herstellen.