begin process at 2010 02 09 23:56:53
  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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,234 sec (4)

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