A partire da .NET 6, abbiamo a disposizione quattro nuove interfacce che possono essere sfruttate per scrivere codice prima e dopo la serializzazione e la deserializzazione di un oggetto. Queste interfacce sono:
- IJsonOnDeserialized: dichiara il metodo OnDeserialized invocato dopo che la classe è stata deserializzata;
- IJsonOnDeserializing: dichiara il metodo OnDeserializing invocato prima che la classe venga deserializzata;
- IJsonOnSerialized: dichiara il metodo OnSerialized invocato dopo che la classe è stata serializzata;
- IJsonOnSerializing: dichiara il metodo OnSerializing invocato prima che la classe venga serializzata.
Una classe può implementare una o più interfacce e quando il processo di serializzazione o deserializzazione parte, la libreria System.Text.Json verifica se queste sono state implementate ed eventualmente ne invoca i metodi. Nel prossimo esempio vediamo come usare questi metodi per validare i dati di un oggetto prima della serializzazione e dopo la deserializzazione.
class Person : IJsonOnDeserialized, IJsonOnSerializing { public int Id { get; set; } public string? Name { get; set; } void IJsonOnDeserialized.OnDeserialized() => Validate(); void IJsonOnSerializing.OnSerializing() => Validate(); private void Validate() { if (Name is null) { throw new InvalidOperationException("Name is null."); } } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestire il breaking change di Entity Framework Core 7 con tabelle che usano identity e trigger
- Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Speciale Visual Studio 2013 e .NET Framework 4.5.1: One ASP.NET, Windows 8.1, Entity Framework 6