IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] CompareTo sur des objets dont le type est connu en dynamique


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par défaut [C#] CompareTo sur des objets dont le type est connu en dynamique
    Je souhaiterais définir une fonction de comparaison pour ma classe d'objets.
    Mais je ne connais pas le type de mes objets à l'avance.
    Et la méthode CompareTo n'est pas défini sur les objets.

    exemple démonstratif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class UnObjet
    {
         public object[] proprietes ;
         public int CompareTo( UnObjet obj, int indicePropriete )
         {
            ( this.proprietes[indicePropriete] ).CompareTo( obj.proprietes[indicePropriete] )
         }
    }

    Merci de votre aide.

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Salut,

    Su quelle base tu vas comparer deux objets qui ne sont pas du même type ?

    C'est à dire on sait comparer deux voitures de marques differentes en comparant la puissance du moteur, Vitesse maximale .....

    Mais comparer un immeuble et une fourchette

  3. #3
    Membre confirmé Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par défaut
    mais si la comparaison sera de même type.

    Je vais bien comparer deux objets qui auront le même type
    sauf que leur type ne sera connu qu'à l'exxécution.
    Il peut être de type int, char, date, ....



    Je peux avoir

    UnObjet 1 proprietes [ 1, "a", true, une date, ... ]

    UnObjet 2 proprietes [ 3, "b", false, une date, ... ]

    La comparaison se fait sur le même indice des propriétés et donc
    des comparaisons équivalentes.

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Ok maos ta méthode prend un UnObjet en parametre

    Dans ce cas c'est facil, UnObjet doit implementer IComparable et tu fais :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class UnObjet
    {
         public object[] proprietes ;
         public int CompareTo( UnObjet obj, int indicePropriete )
         {
    if( this.proprietes[indicePropriete] is UnObjet)
    return ((UnObjet)this.proprietes[indicePropriete]).CompareTo(obj);
    else return 0;
    }
     
    //tu implemente public int CompareTo(object obj) ici
    }

    Sinon si c'est object au lieu de UnObjet, dans ce cas tes classes doivent implémenter IComparable . Ensuite :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class UnObjet
    {
         public object[] proprietes ;
         public int CompareTo( object obj, int indicePropriete )
         {
    if( this.proprietes[indicePropriete] is Classe1)
    ((Classe1)this.proprietes[indicePropriete]).CompareTo(obj);
    else if( this.proprietes[indicePropriete] is Classe2)
    ((Classe2)this.proprietes[indicePropriete]).CompareTo(obj);
    //....
    }
    }

    C'est la premiere idée qui me vient à l'esprit, pour l'instant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2011, 23h55
  2. Méthode JS qui crée des objets dont le nom est recu en paramètre
    Par power of mind dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/07/2009, 13h44
  3. itération sur des objets de types différents ?
    Par jc63 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/09/2007, 08h19
  4. vector de pointeurs sur des objet
    Par jean-bobby dans le forum SL & STL
    Réponses: 26
    Dernier message: 06/08/2004, 14h54
  5. Réponses: 6
    Dernier message: 30/06/2004, 08h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo