begin process at 2008 07 20 03:30:41
1 213 119 membres
42 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : IEnumerable<T> [ Algorithme / Compression, Split et Cryptage ] (chris31500)

IEnumerable<T> le 06/03/2008 16:52:10

chris31500
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);

Re : IEnumerable<T> le 06/03/2008 17:34:00

Bidou
(Admin CS)
Salut,
Pourquoi tu utilises une ArrayList et pas une List<CDefDicret> ??


-My Blog-

Re : IEnumerable<T> le 06/03/2008 18:11:44

chris31500
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.

Re : IEnumerable<T> le 06/03/2008 18:33:06

chris31500
Réponse acceptée !
J'ai résolu mon pb, alors je ferme le sujet.

Il m'a juste suffit de faire mon action en deux temps. En changeant le type de T. Ma question en fait partait sur une mauvaise piste.
Merci à vous.

CSortingBindingList<CDefDiscret> t = this.TravailSource;

CSortingBindingList<CDefDiscretSauvegarde> u = newCSortingBindingList<CDefDiscretSauvegarde>();

t.VerifyDiscretEvent +=

newVerifyDiscretEventHandler(TravailSource_VerifyDiscretEvent_Open);

u.CheckValidation +=

new_CheckFailedCurrentValidation(CheckValidationList);

List<CDefDiscret> discrets_travail = u.DeSerialize(ouverture.FileName, true);

t.MergeWith(discrets_travail,

true);


Classé sous : ienumerable, discrettmp, cdefdiscret, discret, numtiroir

Participer à cet échange

Sujets en rapport

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS