chris31500
Messages postés10Date d'inscriptionsamedi 2 décembre 2000StatutMembreDernière intervention14 avril 2008
-
6 mars 2008 à 16:52
chris31500
Messages postés10Date d'inscriptionsamedi 2 décembre 2000StatutMembreDernière intervention14 avril 2008
-
6 mars 2008 à 18:33
Bonjour à tous,
j'ai un gros soucis, avec IEnumerable.
J'ai repris un soft, qui utilise IEnumerable<T> tout le long du traitement.
Hors, je dois effectuer un changement de donnée.
je fais un foreach sur mon IEnumerable<T>, et j'ajoute chacun des éléments (après modif) dans une iList.
Petit problème, j'aurais besoin pour continuer mon programme, de traiter mon iList en IEnumerable<T>.
Le code (il faut en gros, réaliser la ligne en rouge, sans erreur exception :
XmlSerializer xSer = new XmlSerializer(typeof(T[]));
IEnumerable<CDefDiscretSauvegarde> ilist2 = (IEnumerable<CDefDiscretSauvegarde>)xSer.Deserialize(reader);
bool discret_find = false; // flag d'identification du discret reçu
ArrayList ilist3 = new ArrayList();
IList<CDefDiscret> liste_dico = new List<CDefDiscret>(CMain.Instance.DicoDiscrets); // liste des discrets de référence
foreach (CDefDiscretSauvegarde cDefDiscret in ilist2)
{
int numTiroir = cDefDiscret.NumTiroir;
int numcarte = cDefDiscret.NumCarte;
int numVoie = cDefDiscret.NumVoie;
CDefDiscret discretTmp = new CDefDiscret();
for (int j = 0; j < liste_dico.Count; j++)
{
CDefDiscret d = (CDefDiscret)liste_dico[j]; if ((d.NumTiroir numTiroir) && (d.NumCarte numcarte) && (d.NumVoie == numVoie))
{
discretTmp = d.Clone() as CDefDiscret; // new CDefDiscret(d);
discretTmp.Pilotage = cDefDiscret.Pilotage;
discretTmp.Surveillance = cDefDiscret.Surveillance;
discretTmp.MoyenSurveillance.LedAffichage.NumLed = cDefDiscret.NumLed;
discretTmp.MoyenSurveillance.LedAffichage.CouleurEtatVRAI = cDefDiscret.CouleurEtatVRAI;
discretTmp.MoyenSurveillance.LedAffichage.CouleurEtatFAUX = cDefDiscret.CouleurEtatFAUX;
discretTmp.MoyenSurveillance.LedAffichage.Utilisee = cDefDiscret.Utilisee;
discretTmp.MoyenSurveillance.ModeSurveillance = cDefDiscret.ModeSurveillance;
discretTmp.DashInPort = cDefDiscret.DashInPort;
discret_find = true;
ilist3.Add(discretTmp);
}
}
if (!discret_find)
MessageBox.Show(_gestionLangue.LireTexte(CGestionLangue.ESection.information.ToString(), "no_discret", "") + string.Format(" {0:00} / {1:00} / {2:00}", numTiroir, numcarte, numVoie));
}
IEnumerable<T> iIist = (IEnumerable<T>)ilist3; // exception error
// Fusionner la liste courante et les nouveaux éléments
this.MergeWith(iIist, isClearBefore);
chris31500
Messages postés10Date d'inscriptionsamedi 2 décembre 2000StatutMembreDernière intervention14 avril 2008 6 mars 2008 à 18:11
Je viens de changer mon code pour un List, mais bon... le problème reste le même, je ne peux pas passer en IEnumerate<T>, T étant de type cDefDiscretSauvegarde.