Con riferimento al codice esempio sottostante creo una nuova part e la associo per riferimento alle due liste della classe Brano.
L'elemento della lista AllParts punta allo stesso elemento che punta la lista Parts, quindi se modifico part (esempio part.Name="Parte modificata") mi ritrovo la modifica sia nel primo elemento della AllParts sia nel primo elemento della Parts come è giusto che sia.
Però dopo aver serializzato l'oggetto brano = new Brano(); e salvato su disco e successivamente riletto e deserializzato le due liste non puntano più agli stessi elementi ma viene creata una copia degli oggetti part per ogni lista perchè nel file xml vengono registrate separatamente le due liste e si perde quindi il riferimento allo stesso oggetto.
Per spiegarmi dopo la deserializzazione xml se modifico AllParts[0].Name = “Dopo” Parts[0].Name rimane a “Parte 1” perchè punta ad un oggetto part diverso.
Come posso risolvere questo problema? Cioè vorrei ricreare dopo la deserializzazione la stessa struttura di partenza con le due liste che puntano agli stessi oggetti e non ai loro duplicati.
Grazie
public class Part
{
public string Name { get; set; }
public int ChannelIn { get; set; }
public int Out { get; set; }
public int ChannelOut { get; set; }
public int Banco_0 { get; set; }
public int Banco_32 { get; set; }
public int PrgChange { get; set; }
}
public class Brano
{
public List<Part> AllParts { get; set; }
public List<Part> Parts { get; set; }
}
private void btnNuovaPart_Click(object sender, EventArgs e)
{
Part part = new Part();
part.Name = “Parte1”
brano.AllParts.Add(part);
brano.Parts.Add(part);
}