Ho trovato numerose soluzioni qui in SO e in elsewere che trattano di cloni di oggetti profondi tramite serializzazione/deserializzazione (in memoria e ritorno).Clonazione di oggetti senza serializzazione
Richiede che le classi da clonare siano contrassegnate con [Serializable]
. Mi capita di avere le mie classi (ben la maggior parte di loro) contrassegnate con [DataContract]
perché uso DataContractSerializer
per serializzare in XML.
Ho introdotto solo l'attributo [Serializable]
a causa della necessità di clonare in profondità alcune di queste istanze di classe. Tuttavia, ora qualcosa è accaduto alla serializzazione/deserializzazione tramite DCS perché non funziona più - errori riguardo l'aspettativa di un diverso elemento XML sulla deserializzazione. Se rimuovo lo [Serializable]
, gli errori sono spariti.
Quali sono le mie opzioni? Voglio solo clonare in profondità i miei oggetti il più semplice possibile.
È possibile utilizzare la riflessione, ma ciò potrebbe comportare anche un leggero sovraccarico delle prestazioni. – IDWMaster
Perché hai bisogno di [Serializable] qui? Potresti usare DCS per il clone profondo ...? Basta serializzarlo su un MemoryStream tramite DCS ...? –
sì, mi sono appena inventato qualcosa, lo posterò – mare