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.




