C # Serijalizacija & Deserijalizacija s primjerom

Anonim

Koncept serializacije i deserializacije koristi se kad god se podaci koji se odnose na objekte moraju slati iz jedne aplikacije u drugu. Serijalizacija se koristi za izvoz podataka aplikacije u datoteku. Odredišna aplikacija zatim koristi deserializaciju za izdvajanje podataka iz aplikacije za daljnju upotrebu.

Serijalizacija je koncept u kojem se objekti klase C # zapisuju ili serializiraju u datoteke. Recimo da ste imali razred C # pod nazivom Tutorial. A klasa ima 2 svojstva ID i Tutorials name.

Serijaliziranje se može koristiti za izravno upisivanje svojstava podataka klase Tutorial u datoteku. Deserijalizacija se koristi za čitanje podataka iz datoteke i ponovno konstruiranje Tutorial objekta.

Pogledajmo primjer kako to možemo postići.

U našem primjeru izvest ćemo dolje navedene korake na visokoj razini u kodu

  1. Stvorite klasu pod nazivom Tutorial koja ima 2 svojstva, naime ID i Name
  2. Zatim ćemo stvoriti objekt iz klase i dodijeliti vrijednost "1" svojstvu ID, a vrijednost ".Net" svojstvu imena.
  3. Zatim ćemo serializacijom koristiti za serializaciju gornjeg objekta u datoteku koja se zove Example.txt
  4. Konačno, koristit ćemo deserializaciju za deserializaciju objekta iz datoteke i prikazivanje vrijednosti u konzoli.

Unesite donji kod u datoteku program.cs aplikacije konzole.

Korak 1) Prvi korak je dodavanje klase koja će se koristiti za serializaciju

Objašnjenje koda: -

  1. Klasa koja treba biti serializirana mora imati atribut [Serializable]. Ovo je ključna riječ u jeziku C #. Ova se ključna riječ zatim pridružuje klasi Tutorial. Ako ne spomenete ovaj atribut, dobit ćete pogrešku kada pokušate serializirati klasu.
  2. Sljedeća je definicija klase koja će biti serializirana. Ovdje definiramo klasu koja se naziva "Vodič" i pružamo 2 svojstva, jedno je "ID", a drugo "Ime".

Korak 2) U ovom koraku prvo ćemo stvoriti objekt klase Tutorial i serializirati ga u datoteku koja se naziva Example.txt

Objašnjenje koda: -

  1. Prvo kreiramo objekt klase Tutorial. Zatim dodijelimo vrijednost "1" ID-u, a ".net" svojstvu imena.
  2. Zatim koristimo klasu oblikovača koja se koristi za serializaciju ili pretvaranje objekta u binarni format. Podaci u datoteci u serializaciji rade se u binarnom formatu. Dalje, kreiramo objekt protoka datoteke. Objekt toka datoteke koristi se za otvaranje datoteke Example.txt za potrebe pisanja. Ključne riječi FileMode.Create i FileMode.Write koriste se za posebno spominjanje da datoteku treba otvoriti radi pisanja.
  3. Konačno, koristimo metodu Serialize za prijenos binarnih podataka u datoteku. Zatim zatvorimo tok jer je operacija upisa završena.

Korak 3) Konačno, kako bismo osigurali da su podaci prisutni u datoteci, koristimo deserializaciju za deserializaciju objekta iz datoteke.

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

Objašnjenje koda: -

  1. Stvaramo objekt "stream" da bismo otvorili datoteku Example.txt u načinu samo za čitanje.
  2. Zatim koristimo klasu formatiranja koja se koristi za deserializaciju objekta koji je pohranjen u datoteci Example.txt. Vraćeni objekt postavljen je na objekt objnew.
  3. Na kraju, prikazujemo svojstva objekta "objnew" na konzoli pomoću svojstava "ID" i "name".

Kada se postavi gornji kôd i projekt pokrene pomoću Visual Studija, dobit ćete donji izlaz.

Izlaz:-

Iz gornjeg rezultata možete vidjeti da su vrijednosti iz datoteke deserijalizirane pravilno i prikazane u konzoli.

Sažetak

Serijalizacija se koristi za pisanje objekata klase u datoteke.

Deserijalizacija se koristi za oporavak objekata iz datoteke.