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
- Crea una classe chiamata Tutorial che ha 2 proprietà, ovvero ID e Nome
- Creeremo quindi un oggetto dalla classe e assegneremo un valore "1" alla proprietà ID e un valore ".Net" alla proprietà name.
- Useremo quindi la serializzazione per serializzare l'oggetto sopra in un file chiamato Example.txt
- 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: -
- 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.
- 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: -
- Per prima cosa creiamo un oggetto della classe Tutorial. Quindi assegniamo il valore "1" a ID e ".net" alla proprietà name.
- 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.
- 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: -
- Creiamo l'oggetto "stream" per aprire il file Example.txt in modalità di sola lettura.
- 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.
- 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.