Serializare și deserializare în C# cu exemplu
Serializare și deserializare în C#
Conceptul de serializare și deserializare este folosit ori de câte ori datele referitoare la obiecte trebuie trimise de la o aplicație la alta. Serializarea este utilizată pentru a exporta datele aplicației într-un fișier. Aplicația de destinație utilizează apoi deserializarea pentru a extrage datele din aplicație pentru utilizare ulterioară.
Serializarea este un concept în care obiectele clasei C# sunt scrise sau serializate în fișiere. Să presupunem că ai avut o clasă C# numită Tutorial. Și clasa are 2 proprietăți de ID și nume de tutoriale.
Serializarea poate fi folosită pentru a scrie direct proprietățile de date ale clasei Tutorial într-un fișier. Deserializarea este folosită pentru a citi datele din fișier și pentru a construi din nou obiectul Tutorial.
Cum se serializa un obiect în C#
Să ne uităm la un exemplu despre cum putem realiza acest lucru.
În exemplul nostru, vom efectua pașii de mai jos de nivel înalt din cod
- Creați o clasă numită Tutorial care are 2 proprietăți, și anume ID și Name
- Apoi vom crea un obiect din clasă și vom atribui o valoare „1” proprietății ID și o valoare „.Net” proprietății nume.
- Vom folosi apoi serializarea pentru a serializa obiectul de mai sus într-un fișier numit Example.txt
- În cele din urmă, vom folosi deserializarea pentru a deserializa obiectul din fișier și pentru a afișa valorile în Consolă.
Introduceți codul de mai jos în fișierul program.cs al aplicației de consolă.
Pas 1) Adăugați clasa.
Primul pas este să adăugați clasa care va fi folosită pentru serializare
Explicația codului: -
- Clasa care trebuie serializată trebuie să aibă atributul [Serializable]. Acesta este un cuvânt cheie în C#. Acest cuvânt cheie este apoi atașat la clasa Tutorial. Dacă nu menționați acest atribut, veți primi o eroare când încercați să serializați clasa.
- Urmează definiția clasei care va fi serializată. Aici definim o clasă numită „Tutorial” și oferim 2 proprietăți, una este „ID” și cealaltă este „Nume”.
Pas 2) Creați obiectul.
În acest pas, mai întâi vom crea obiectul clasei Tutorial și îl vom serializa în fișierul numit Example.txt
Explicația codului: -
- Mai întâi, creăm un obiect al clasei Tutorial. Apoi atribuim valoarea „1” ID-ului și „.net” proprietății nume.
- Apoi folosim clasa de formatare care este folosită pentru a serializa sau a converti obiectul într-un format binar. Datele din fișierul în serializare se fac în format binar. Apoi, creăm un obiect flux de fișiere. Obiectul flux de fișiere este folosit pentru a deschide fișierul Example.txt în scopuri de scriere. Cuvintele cheie FileMode.Create și FileMode.Write sunt folosite pentru a menționa în mod specific faptul că fișierul trebuie deschis în scopuri de scriere.
- În cele din urmă, folosim metoda Serialize pentru a transfera datele binare în fișier. Închidem apoi fluxul, de la scriere operaţie este complet.
Pas 3) Utilizați deserializarea.
În cele din urmă, pentru a ne asigura că datele sunt prezente în fișier, folosim deserializarea pentru a deserializa obiectul din fișier.
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(); } } }
Explicația codului: -
- Creăm obiectul „curent” pentru a deschide fișierul Example.txt în modul numai pentru citire.
- Apoi folosim clasa de formatare care este folosită pentru a deserializa obiectul, care este stocat în fișierul Example.txt. Obiectul returnat este setat la obiectul objnew.
- În cele din urmă, afișăm proprietățile obiectului „objnew” pe consolă folosind proprietățile „ID” și „name”.
Când codul de mai sus este setat și proiectul este rulat folosind Visual Studio, veți obține rezultatul de mai jos.
Ieșire: -
Puteți vedea din rezultatul de mai sus că valorile din fișier au fost deserializate corect și afișate în consolă.
Rezumat
Serializarea este folosită pentru a scrie obiecte de clasă în fișiere.
De-serializarea este utilizată pentru a recupera obiectele din fișier.