Serializzazione e deserializzazione in C# con esempio
Serializzazione e deserializzazione in C#
Il concetto di serializzazione e deserializzazione viene utilizzato ogni volta che i dati relativi agli oggetti devono essere inviati da un'applicazione all'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 della classe C# vengono scritti o serializzati su file. Supponiamo che tu abbia una classe C# chiamata Tutorial. E la classe ha 2 proprietà di ID e nome 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.
Come serializzare un oggetto in C#
Diamo un'occhiata a un esempio di come possiamo raggiungere questo obiettivo.
Nel nostro esempio, eseguiremo i passaggi di alto livello nel codice riportati di seguito
- 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.
- Utilizzeremo quindi la serializzazione per serializzare l'oggetto sopra in un file chiamato Esempio.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.
Passo 1) Aggiungi la classe.
Il primo passo è 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".
Passo 2) Crea l'oggetto.
In questo passaggio, per prima cosa creeremo l'oggetto della classe Tutorial e lo serializzeremo nel file chiamato Esempio.txt
Spiegazione del codice: -
- Per prima cosa creiamo un oggetto della classe Tutorial. Assegniamo quindi il valore “1” all'ID e “.net” alla proprietà name.
- Utilizziamo quindi la classe 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 Esempio.txt per scopi di scrittura. Le parole chiave FileMode.Create e FileMode.Write vengono utilizzate per menzionare specificamente che il file deve essere aperto per scopi di scrittura.
- Infine, utilizziamo il metodo Serialize per trasferire i dati binari nel file. Chiudiamo quindi lo stream, dal momento della scrittura operazione è completo.
Passo 3) Utilizzare la deserializzazione.
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”ruscello" per aprire il file Esempio.txt in modalità di sola lettura.
- Utilizziamo quindi la classe formattatore utilizzata per deserializzare l'oggetto, che è archiviato nel file Esempio.txt. L'oggetto restituito è impostato sull'oggetto objnew.
- Infine, visualizziamo le proprietà dell'oggetto “objnew” sulla console utilizzando le proprietà “ID” e “name”.
Quando viene impostato il codice precedente e il progetto viene eseguito utilizzando Di Visual Studio, otterrai l'output seguente.
Produzione:-
Dall'output precedente puoi vedere che i valori del file sono stati deserializzati correttamente e visualizzati nella console.
Sintesi
La serializzazione viene utilizzata per scrivere oggetti di classe su file.
La deserializzazione viene utilizzata per recuperare gli oggetti dal file.