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.