Clonare un oggetto in .NET con la libreria JSON.NET

di Stefano Mostarda, in .NET Framework,

Quando dobbiamo clonare un oggetto .NET, abbiamo a disposizione diversi metodi. In questo script vediamo come clonare un oggetto utilizzando la libreria JSON.NET che ci permette di serializzare un oggetto, con tutti i suoi dati e le informazioni sui tipi reali, in una stringa e di deserializzare questa stringa in un nuovo oggetto che è il clone dell'oggetto originale.

public static T Clone<T>(this T value)
{
  var options = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All });

  var serializedValue = JsonConvert.SerializeObject(value, options);
  return JsonConvert.DeserializeObject<T>(serializedValue , options)
}

Nell'extension method Clone facciamo tre cose: prima dichiariamo un oggetto che contiene le impostazioni di serializzazione e deserializzazione di JSON.NET. Nello specifico specifichiamo che oltre ai valori, devono essere serializzati anche i nomi dei tipi reali. Questo è fondamentale nel gestire proprietà che contengono oggetti il cui tipo eredita dal tipo della proprietà (ad esempio una proprietà di tipo Animal che contiene un oggetto di tipo Dog).

Successivamente, serializziamo l'oggetto in input in JSON e poi lo deserializziamo utilizzando in output il tipo generico T e utilizzando 'oogeto che contiene le impostazioni.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi