Serialisatie en deserialisatie in C# met voorbeeld
Serialisatie en deserialisatie in C#
Het concept van serialisatie en deserialisatie wordt gebruikt wanneer gegevens met betrekking tot objecten van de ene applicatie naar de andere moeten worden verzonden. Serialisatie wordt gebruikt om applicatiegegevens naar een bestand te exporteren. De doeltoepassing maakt vervolgens gebruik van deserialisatie om de gegevens uit de toepassing te extraheren voor verder gebruik.
Serialisatie is een concept waarbij C#-klasseobjecten naar bestanden worden geschreven of geserialiseerd. Stel dat u een C#-klasse had met de naam Tutorial. En de klasse heeft 2 eigenschappen: ID en Tutorials-naam.
Serialiseren 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.
Een object serialiseren in C#
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
- Maak een klasse met de naam Tutorial die twee eigenschappen heeft, namelijk ID en Naam
- We zullen dan een object van de klasse maken en een waarde van “1” toewijzen aan de ID-eigenschap en een waarde van “.Net” aan de naam-eigenschap.
- Vervolgens zullen we serialisatie gebruiken om het bovenstaande object te serialiseren naar een bestand met de naam Voorbeeld.txt
- 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 program.cs-bestand van de consoletoepassing in.
Stap 1) Voeg de klas toe.
De eerste stap is het toevoegen van de klasse die voor serialisatie zal worden gebruikt
Code-uitleg: -
- De klasse die moet worden geserialiseerd, moet het attribuut [Serializable] hebben. Dit is een trefwoord in C#. Dit trefwoord wordt vervolgens aan de klasse Tutorial gekoppeld. Als u dit attribuut niet vermeldt, krijgt u een foutmelding wanneer u probeert de klasse te serialiseren.
- Vervolgens volgt de definitie van de klasse die zal worden geserialiseerd. Hier definiëren we een klasse met de naam ‘Tutorial’ en bieden we twee eigenschappen aan, de ene is ‘ID’ en de andere is ‘Naam’.
Stap 2) Maak het object.
In deze stap maken we eerst het object van de klasse Tutorial en serialiseren we dit naar het bestand met de naam Voorbeeld.txt
Code-uitleg: -
- Eerst maken we een object van de klasse Tutorial. Vervolgens wijzen we de waarde “1” toe aan ID en “.net” aan de eigenschap name.
- Vervolgens gebruiken we de formatterklasse die wordt gebruikt om het object te serialiseren of naar een binair formaat te converteren. De gegevens in het bestand in serialisatie worden in binair formaat uitgevoerd. Vervolgens maken we een filestream-object. Het filestream-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.
- Ten slotte gebruiken we de Serialize-methode om de binaire gegevens naar het bestand over te brengen. Vervolgens sluiten we de stream, sinds het schrijven operatie is compleet.
Stap 3) Gebruik deserialisatie.
Om er ten slotte 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-uitleg: -
- Wij creëren het object “stream” om het bestand Voorbeeld.txt te openen in de modus Alleen lezen.
- Vervolgens gebruiken we de formatterklasse die wordt gebruikt om het object te deserialiseren, dat is opgeslagen in het voorbeeld.txt-bestand. Het geretourneerde object wordt ingesteld op het object objnew.
- Ten slotte geven we de eigenschappen van het object “objnew” weer op de console met behulp van de eigenschappen “ID” en “name”.
Wanneer de bovenstaande code is ingesteld en het project wordt uitgevoerd met Visual Studio, krijgt u de onderstaande uitvoer.
Uitgang: -
Uit de bovenstaande uitvoer kunt u zien dat de waarden uit het bestand correct zijn gedeserialiseerd en in de console worden weergegeven.
Samenvatting
Serialisatie wordt gebruikt om klasseobjecten naar bestanden te schrijven.
Deserialisatie wordt gebruikt om de objecten uit het bestand te herstellen.