Serializzazione C # & Deserializzazione con esempio

Anonim

Il concetto di serializzazione e deserializzazione viene utilizzato ogni volta che i dati relativi agli oggetti devono essere inviati da un'applicazione a un'altra. La serializzazione viene utilizzata per esportare i dati dell'applicazione in un file. L'applicazione di destinazione utilizza quindi la deserializzazione per estrarre i dati dall'applicazione per un ulteriore utilizzo.

La serializzazione è un concetto in cui gli oggetti di classe C # vengono scritti o serializzati in file. Supponiamo che tu abbia una classe C # chiamata Tutorial. E la classe ha 2 proprietà di ID e nome dei tutorial.

La serializzazione può essere utilizzata per scrivere direttamente le proprietà dei dati della classe Tutorial in un file. La deserializzazione viene utilizzata per leggere i dati dal file e costruire nuovamente l'oggetto Tutorial.

Diamo un'occhiata a un esempio di come possiamo ottenere questo risultato.

Nel nostro esempio, eseguiremo i seguenti passaggi di alto livello nel codice

  1. Crea una classe chiamata Tutorial che ha 2 proprietà, ovvero ID e Nome
  2. Creeremo quindi un oggetto dalla classe e assegneremo un valore "1" alla proprietà ID e un valore ".Net" alla proprietà name.
  3. Useremo quindi la serializzazione per serializzare l'oggetto sopra in un file chiamato Example.txt
  4. Infine, utilizzeremo la deserializzazione per deserializzare l'oggetto dal file e visualizzare i valori nella Console.

Immettere il codice seguente nel file program.cs dell'applicazione console.

Passaggio 1) Il primo passaggio consiste nell'aggiungere la classe che verrà utilizzata per la serializzazione

Spiegazione del codice: -

  1. La classe che deve essere serializzata deve avere l'attributo [Serializable]. Questa è una parola chiave in C #. Questa parola chiave viene quindi allegata alla classe Tutorial. Se non menzioni questo attributo, riceverai un errore quando proverai a serializzare la classe.
  2. La prossima è la definizione della classe che verrà serializzata. Qui stiamo definendo una classe chiamata "Tutorial" e fornendo 2 proprietà, una è "ID" e l'altra è "Nome".

Passaggio 2) In questo passaggio, per prima cosa creeremo l'oggetto della classe Tutorial e lo serializzeremo nel file denominato Example.txt

Spiegazione del codice: -

  1. Per prima cosa creiamo un oggetto della classe Tutorial. Quindi assegniamo il valore "1" a ID e ".net" alla proprietà name.
  2. Quindi utilizziamo la classe del formattatore che viene utilizzata per serializzare o convertire l'oggetto in un formato binario. I dati nel file in serializzazione vengono eseguiti in formato binario. Successivamente, creiamo un oggetto flusso di file. L'oggetto flusso di file viene utilizzato per aprire il file Example.txt a scopo di scrittura. Le parole chiave FileMode.Create e FileMode.Write vengono utilizzate per indicare specificamente che il file deve essere aperto per scopi di scrittura.
  3. Infine, utilizziamo il metodo Serialize per trasferire i dati binari nel file. Quindi chiudiamo il flusso, poiché l'operazione di scrittura è completa.

Passaggio 3) Infine, per garantire che i dati siano presenti nel file, utilizziamo la deserializzazione per deserializzare l'oggetto dal file.

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

Spiegazione del codice: -

  1. Creiamo l'oggetto "stream" per aprire il file Example.txt in modalità di sola lettura.
  2. Quindi utilizziamo la classe del formattatore che viene utilizzata per deserializzare l'oggetto, che è memorizzato nel file Example.txt. L'oggetto restituito è impostato sull'oggetto objnew.
  3. Infine, mostriamo le proprietà dell'oggetto "objnew" alla console utilizzando le proprietà "ID" e "nome".

Quando il codice precedente è impostato e il progetto viene eseguito utilizzando Visual Studio, otterrai l'output seguente.

Produzione:-

È possibile vedere dall'output precedente che i valori del file sono stati deserializzati correttamente e visualizzati nella console.

Sommario

La serializzazione viene utilizzata per scrivere oggetti di classe nei file.

La deserializzazione viene utilizzata per ripristinare gli oggetti dal file.