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 :

Nom de méthode à incrémenter


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Par défaut Nom de méthode à incrémenter
    Bonjour j'ai une petite question un peu bête mais je ne trouve pas de solution:

    Je dois faire un gros paquet d'appel de méthodes de type void qui portent des noms qui s'incrémentent
    Dessin1();
    Dessin2();
    ...
    Pour éviter les copier-coller j'aimerais faire une boucle for de ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=1; i<3;i++)
    {
         Dessini(); 
    }
    comment faire pour concaténer le i dans le nom de la méthode?
    J'ai essayé Dessin+i.ToString()(); ca ne marche pas
    Des idées?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par vinch999 Voir le message
    Je dois faire un gros paquet d'appel de méthodes de type void qui portent des noms qui s'incrémentent
    Dessin1();
    Dessin2();
    ...
    Déjà en lisant ça, je me dis qu'il y a comme un problème de design... que font ces méthodes ? Est-ce que tu ne pourrais pas arranger le code autrement ?

    Il y a une solution qui consiste à utiliser la réflexion, mais c'est un peu lourd...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=1; i<3;i++)
    {
         MethodInfo method = this.GetType().GetMethod("Dessin" + i);
         method.Invoke(this, null);
     
         // Ou alors, si la méthode est statique :
         // method.Invoke(null, null);
    }

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Avant d'essayer de trouver une solution a ta demande je me poserais quant meme la question de la pertinence du besoin

    Quelles sont ces methodes ?
    C'est toi qui les a écrites
    Combien de methodes "numérotées" as tu

    Sinon une solution qui me vient a l'esprit c'est de crer un tableau de delegate

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par olibara Voir le message
    Sinon une solution qui me vient a l'esprit c'est de crer un tableau de delegate
    J'y ai pensé aussi, mais ce n'est pas plus rapide de créer N delegates que d'appeler N méthodes... L'autre option, c'est de créer ces delegates par réflexion, avec les problèmes de perfs que ça pose.

    Cela dit, si les fonctions doivent être appellées plusieurs fois, il vaut mieux effectivement créer les delegates une seule fois au début, puis utiliser ces delegates à chaque appel.

    Sinon, autre approche possible (un peu bourrine) : la génération de code avec DynamicMethod

    Mais bon, avant de partir dans des délires comme ça, je pense qu'il vaudrait mieux corriger le design

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Citation Envoyé par Tomlev
    Cela dit, si les fonctions doivent être appellées plusieurs fois, il vaut mieux effectivement créer les delegates une seule fois au début, puis utiliser ces delegates à chaque appel.
    C'est bien a ca que je pensais

    Citation Envoyé par Tomlev
    Mais bon, avant de partir dans des délires comme ça, je pense qu'il vaudrait mieux corriger le design
    Je pense aussi

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Par défaut
    Vous avez raison, j'avais mal pensé mon design. J'ai su me débrouiller et éviter ce problème.
    Merci quand même pour les renseignements, ça pourrait toujours servir

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par vinch999 Voir le message
    Vous avez raison, j'avais mal pensé mon design. J'ai su me débrouiller et éviter ce problème.
    Merci quand même pour les renseignements, ça pourrait toujours servir
    Cette histoire respire l'ex-dev PHP ? je me trompe ?

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

Discussions similaires

  1. Utiliser une chaîne comme nom de méthode - est ce possible ?
    Par mikaelm dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 10/03/2008, 10h55
  2. Réponses: 1
    Dernier message: 24/01/2008, 17h30
  3. nom des contrôles incrémenté
    Par karimoux75 dans le forum VBA Word
    Réponses: 2
    Dernier message: 23/11/2007, 23h59
  4. Appel d'une méthode à partir d'un nom de méthode
    Par tnarol dans le forum Langage
    Réponses: 20
    Dernier message: 07/03/2007, 17h46
  5. Extraire le nom des méthodes d'un projet
    Par nitrous007 dans le forum C#
    Réponses: 2
    Dernier message: 13/02/2007, 10h19

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