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#] Comment utiliser multiples définitions ?


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut [C#] Comment utiliser multiples définitions ?
    Bonjour,
    Ma question peut sembler stupide..
    Mais imaginons que j'ai un code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    object objGlobal
     
    public void maFonction(option1 a){}
    public void maFonction(option2 a){}
     
    public void maFonction(option3 a){}
    si j'appelle :
    maFonction(objGlobal); evidemment ça ne compile pas car il considère que objGlobal n'est ni de type option1 option2 option3.
    Evidemment mon but est d'éviter du code du style :
    if objGlobal.getType().toString().equals(option1.gettype().tostring())
    Comment faire pour que ça marche ?
    merci d'avance

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Tu seras obligé de tester le type de tes objets à un moment donné, mais tu peux néanmoins le faire d'une manière plus claire avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    object objGlobal
     
    public void maFonction(object obj)
    {
        if (obj is option1) 
        {
            maFonction((option1)obj);
        }
        else if (obj is option2)
        {
            maFonction((option2)obj);
        }
        else if (obj is option3)
        {
            maFonction((option3)obj);
        }
        else
        {
            // erreur par exemple, car le type de obj n'est pas supporté
        }
    }
     
    public void maFonction(option1 a){}
    public void maFonction(option2 a){}
    public void maFonction(option3 a){}
    Il y a peut être mieux, je n'ai jamais été confronté à ceci donc je ne me suis jamais vraiment posé la question.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Y a t-il moyen de faire du cast en dynamique ??

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Bon, j'ai fait différemment !
    Alors j'ai créé mes fonctions et je fais un appel du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    this.GetType().InvokeMember ("perturbProduct", 
    				BindingFlags.InvokeMethod,
    				null,
    				this,
    				new object[]{m_produit,m_key});
    voila, le type est bien matché :-)

  5. #5
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    En objet, on mettrait 'MaFonction' dans les objets 'option1', 'option2' et 'option3' (qui héritent tous les trois d'une classe Option ou d'une interface IOption qui définie une méthode MaFonction')

    Comme ça c'est le polymorphisme qui te fait directement la redirection vers la bonne méthode Propre, simple et objet

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

Discussions similaires

  1. comment résoudre un problème de multiple définition
    Par razily dans le forum Débuter
    Réponses: 8
    Dernier message: 24/03/2010, 19h29
  2. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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