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 :

Incrémentation Plugin avec une Classe [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 43
    Par défaut Incrémentation Plugin avec une Classe
    Bonjour,
    J'ai créer un plugin qui fonctionne et me retourne une valeur.
    Cependant, j'ai ensuite créer une boucle infini afin de me retourner un chiffre qui augmente petit à petit mais le plugin ne me retourne que la première valeur.
    Pourriez-vous m'aidez ?
    Merci d'@vance.

    ps : je vous met le code du plugin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public int Compter()
            {
                int nombre = 1;
                for (int i = 2; i > 1; i++)
                {
                    nombre++;
     
                }
     
            }
    et l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void button2_Click(object sender, EventArgs e)
            {
                ICollection<IPlugin> plugins = PluginLoader.LoadPlugins("Plugins");
                foreach (IPlugin item in plugins)
                {
                    if (item.Nom() == "Plugin2")
                    {
                        richTextBox1.Text = "plugin : " + item.Nom() + " nombre : " + item.Compter();
                    }
                }
            }

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Bonjour,
    Je ne vois pas de return dans ta méthode Compter(), une erreur de copier/coller ?
    Sinon si tu veux que ta méthode retourne à chaque fois une nouvelle valeur, tu peux soit regarder du côté de Yield Return, doit ajouter un membre dans la classe, l'incrémenter à chaque appel et renvoyer sa valeur.

    Edit: je viens de relire l'aide de Yield Return, ce n'est pas approprié ici.

    Tatayo.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 43
    Par défaut
    En vérité je faisait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      public int Compter()
            {
                int nombre = 5;
                for (int i = 2; i > 1; i++)
                {
                    nombre++;
     
                }
          return nombre;
            }
    j'ai aussi essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      public int Compter()
            {
                int nombre = 5;
                for (int i = 2; i > 1; i++)
                {
                    nombre++;
                    return nombre;
                }
          return 2;
            }
    Mais comme dit précédément cela ne me renvoi que la première valeur, c'est pour cela que je me demandais si il n'y avait pas d'alternative au return.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    C'est tout à fait normal.
    Ton code fait exactement la même chose à chaque appel, donc il ne peut que renvoyer la même valeur.
    Pour que la méthode renvoie à chaque appel une nouvelle valeur, il faut "mémoriser" l'ancienne.
    Donc, à mon avis:
    1. Ajoute un membre privé de type int.
    2. Initialise le à 0 dans le constructeur
    3. Dans la méthode, incrémente simplement ce membre, et renvoie sa valeur


    Et voilà, c'est réglé.


    Tatayo.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 43
    Par défaut
    Le probleme c'est que cette class est lié à une interface et je ne sais comment initialiser le constructeur. Je me retrouve donc avec une erreur System.MissingMethodException : ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Plugin2()
            {
                nombre = 0;
            }
     
              public int Compter()
            {
                    nombre++;
                    return nombre;
            }
    et mon interface :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    namespace PluginContract
    {
        public interface IPlugin
        {
            int Compter();
            String Nom();        
        }
    }

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Citation Envoyé par GFauconnier Voir le message
    Le problème c'est que cette class est lié à une interface et je ne sais comment initialiser le constructeur. Je me retrouve donc avec une erreur System.MissingMethodException : ma classe :
    Citation Envoyé par tatayo Voir le message
    1. Ajoute un membre privé de type int.
    2. Initialise le à 0 dans le constructeur
    3. Dans la méthode, incrémente simplement ce membre, et renvoie sa valeur
    J'ai dit dans le constructeur, pas au moment de l'instanciation… Il faut donc ajouter un constructeur à ta classe. Le fait que ta classe implémente une interface ne change rien ici.

    Tatayo.

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

Discussions similaires

  1. [Surcharge]Operateur<< avec une classe maison
    Par KeNnEdY dans le forum C++
    Réponses: 6
    Dernier message: 14/09/2005, 15h51
  2. Pb avec une Classe d'exception EOleError
    Par raoulmania dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/05/2005, 12h39
  3. Utilisation iterator avec une classe perso
    Par SteelBox dans le forum C++
    Réponses: 19
    Dernier message: 07/03/2005, 11h30
  4. [C#][WebServices] Appel methode avec une classe en paramètre
    Par bran_noz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2004, 16h41
  5. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45

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