begin process at 2012 02 09 01:32:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Compression, Split et Cryptage

 > 

IEnumerable<T>


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

IEnumerable<T>

jeudi 6 mars 2008 à 16:52:10 | IEnumerable<T>

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);
jeudi 6 mars 2008 à 17:34:00 | Re : IEnumerable<T>

Bidou

Administrateur CodeS-SourceS
Salut,
Pourquoi tu utilises une ArrayList et pas une List<CDefDicret> ??


-My Blog-
jeudi 6 mars 2008 à 18:11:44 | Re : IEnumerable<T>

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.
jeudi 6 mars 2008 à 18:33:06 | Re : IEnumerable<T>

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


Cette discussion est classée dans : ienumerable, discrettmp, cdefdiscret, discret, numtiroir


Répondre à ce message

Sujets en rapport avec ce message

Thread erreur [ par chris31500 ] Bonjour,je bloque sur un problème tout bete d'accès multi thread :J'ai une interruption RS422 qui appelle une méthode qui doit modifier un databinding IEnumerable et un débutant [ par peug ] Avé !Je débute en c# alors me tapez pas tout de suite ;)Sur ce code :using System;using System.Collections.Generic;using System.ComponentModel;<br / Initialisations "Array-like", IEnumerable, Add() et lecture seule [ par Minotthor ] Bonjour à tous, Soient Assembly et Sign, deux classes "maison" ... Je crée une classe Assembly qui contiendra en privé une List et j'aimerais pouvoi [IEnumerable] libérer les ressources [ par toof89 ] Bonjour la communauté, Je me permets de vous écrire car j'aurais besoin d'une petit conseil. J'utilise actellement dans un forme un usercontrol custo


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,498 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales