Serialisering och deserialisering i C# med exempel

Serialisering och deserialisering i C#

Konceptet serialisering och deserialisering används när data som hänför sig till objekt måste skickas från en applikation till en annan. Serialisering används för att exportera programdata till en fil. Destinationsapplikationen använder sedan deserialisering för att extrahera data från applikationen för vidare användning.

Serialisering är ett koncept där C#-klassobjekt skrivs eller serialiseras till filer. Låt säga att du hade en C#-klass som heter Tutorial. Och klassen har 2 egenskaper med ID och Tutorials namn.

Serialisering kan användas för att direkt skriva dataegenskaperna för klassen Tutorial till en fil. Deserialisering används för att läsa data från filen och konstruera Tutorial-objektet igen.

Hur man serialiserar ett objekt i C#

Låt oss titta på ett exempel på hur vi kan uppnå detta.

I vårt exempel kommer vi att utföra stegen nedan på hög nivå i koden

  1. Skapa en klass som heter Tutorial som har 2 egenskaper, nämligen ID och Namn
  2. Vi kommer sedan att skapa ett objekt från klassen och tilldela värdet "1" till ID-egenskapen och värdet ".Net" till namnegenskapen.
  3. Vi kommer sedan att använda serialisering för att serialisera objektet ovan till en fil som heter Exempel.txt
  4. Slutligen kommer vi att använda deserialisering för att deserialisera objektet från filen och visa värdena i konsolen.


Ange koden nedan i filen program.cs i konsolapplikationen.

Steg 1) Lägg till klassen.

Det första steget är att lägga till klassen som kommer att användas för serialisering

Serialisera ett objekt i C#

Kodförklaring:-

  1. Klassen som behöver serialiseras måste ha attributet [Serializable]. Detta är ett nyckelord i C#. Det här nyckelordet kopplas sedan till handledningsklassen. Om du inte nämner detta attribut kommer du att få ett felmeddelande när du försöker serialisera klassen.
  2. Nästa är definitionen av klassen som kommer att serialiseras. Här definierar vi en klass som heter "Tutorial" och tillhandahåller 2 egenskaper, en är "ID" och den andra är "Namn."

Steg 2) Skapa objektet.

I det här steget kommer vi först att skapa objektet för klassen Tutorial och serialisera det till filen Exempel.txt

Serialisera ett objekt i C#

Kodförklaring:-

  1. Först skapar vi ett objekt av klassen Tutorial. Vi tilldelar sedan värdet "1" till ID och ".net" till namnegenskapen.
  2. Vi använder sedan formateringsklassen som används för att serialisera eller konvertera objektet till ett binärt format. Data i filen i serialisering görs i binärt format. Därefter skapar vi ett filströmsobjekt. Filströmsobjektet används för att öppna filen Exempel.txt för skrivändamål. Nyckelorden FileMode.Create och FileMode.Write används för att specifikt nämna att filen ska öppnas för skrivsyften.
  3. Slutligen använder vi Serialize-metoden för att överföra binära data till filen. Vi stänger sedan strömmen, eftersom skrivningen drift är komplett.

Steg 3) Använd deserialisering.

Slutligen för att säkerställa att data finns i filen använder vi deserialisering för att deserialisera objektet från filen.

Serialisera ett objekt i 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();
  }
 }
}

Kodförklaring:-

  1. Vi skapar objektet "ström” för att öppna filen Exempel.txt i lässkyddat läge.
  2. Vi använder sedan formateringsklassen som används för att deserialisera objektet, som lagras i filen Example.txt. Objektet som returneras är satt till objektet objnew.
  3. Slutligen visar vi egenskaperna för objektet "objnew" till konsolen med hjälp av egenskaperna "ID" och "name".

När ovanstående kod är inställd och projektet körs med Visual Studio, får du utdata nedan.

Produktion:-

Serialisera ett objekt i C#

Du kan se från ovanstående utdata att värdena från filen deserialiserades korrekt och visades i konsolen.

Sammanfattning

Serialisering används för att skriva klassobjekt till filer.

Avserialisering används för att återställa objekten från filen.