List si svuota dopo caricamento con altra lista in deep copy

sabato 30 giugno 2012 - 19.25
Tag Elenco Tags  C#  |  .NET 3.5  |  .NET 4.0

InsettoScoppiettato Profilo | Junior Member

Mi ritrovo uno strano comportamento di una lista che dopo essere caricata con vari elementi si svuota immediatamente all'uscita della routine di cariamento.
Vi posto il codice per capire il problema:

qui la chiamata alla routine:

if (Response.Movements != null) { ProcessFleetMovements(Response.Movements); previousMissionsRead = Response.Movements.Count; (#1) thereAreMissionsToRead = 0; }


e qui la routine:

private void ProcessFleetMovements(List<Mission> list) { if (Database.Empire.MissionWrapper.ActiveMissions == null) Database.Empire.MissionWrapper.ActiveMissions = new List<Mission>(); else Database.Empire.MissionWrapper.ActiveMissions.Clear(); foreach (Mission mis in list) { Database.Empire.MissionWrapper.ActiveMissions.Add(new Mission(mis)); } }

Alcuni dati al contorno: la scalle MIssion Wrapper è così definita (come membro di Empire che è una classe più grande:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

SI nota che ActiveMissions chiamata dalla routine ProcessFleetMovements(List<Mission> list) non è altro che una proprietà get.

IN pratica durante il debugging della routine la lista appartenente al database si carica normalmente ma subito all'ustruzione successiva (quindi in uacita dalla routine) si svuota e torna a Count = 0! Questo anche prima di esguire fisicamente l'istruzione (#1)!

Avreste qualche idea sul perchè di questo strano comportamento?
Ho provato a modificare la routine di caricamento, prima caricando in deep copy ogni singola istanza del ciclo foreach, e poi con una sola istruzione di indirizzamento della Lista con la nuova lista in ingresso: il comportamento è lo stesso: dentro la routine la lista è piena, fuori dalla routine è vuota.

Sono a secco di spiegazioni....
Alessandro Parma
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5