Indexer des procedures

Résolu
Signaler
Messages postés
174
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
-
Messages postés
174
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
-
Bonsoir à tous,
Voila j'ai un besoin de faire pleins de choses mais bon là je planche. Alors qui c'est...y'a peut-être quelqu'un de doué...

J'ai une vingtaine de procédures i1( ), i2( ), i3( ), etc...différentes qui pourront toutes être appelé depuis une autre procédure que j'ai appelé H( ). Je voudrai que la procédure H( ) prenne en paramètre un integer correspondant à un index dans une énumération des noms des différentes procédures. Suivant cet index j'appelerai telle ou telle procédure. Mon problême, c'est que j'ai pas envie de faire un "suivant cas (index)" car c'est super lourd... ni de if else imbriquée alors est-ce-que quelqu'un aurait une idée? des pointeurs ou un petit exemple serait vraiment le bienvenue.

La connaissance est la plus grande des richesses.

4 réponses

Messages postés
28
Date d'inscription
dimanche 24 août 2003
Statut
Membre
Dernière intervention
28 septembre 2009

Salut LordOfTheShadow,

alors pour résoudre ton problème je pense qu'il faut utiliser la Reflexion

je te passe un petit exemple :

using System.Relfexion;

public class ListProc
    {

        public ListProc()
        {

        }

        public void Proc1()
        {
            MessageBox.Show("Procedure 1");
        }
        public void Proc2()
        {
            MessageBox.Show("Procedure 2");
        }
        public void Proc3()
        {
            MessageBox.Show("Procedure 3");
        }

...

        public void Proc(int i)
        {
            MethodInfo methodInfo=this.GetType().GetMethod("Proc"+i.ToString());

            methodInfo.Invoke(this,null);
        }

    }

Et ensuite, pour l'utiliser :

ListProc MaListe = new ListProc();

MaListe.Proc(3);

En espérant que ce soit bien ce que tu recherche
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, la proposition de bubbathemaster est bonne.. une collection avec des pointeurs de fonction ( des délégués en C# )

private delegate void FuncPtr( );



public void Exemple( )
{
    FuncPtr[ ] ptr = new FuncPtr[ 2 ];
    ptr[ 0 ] = Func01;
    ptr[ 1 ] = Func02;



    for( int i = 0; i < ptr.Length; i++ )
        ptr[ i ]( );
}



public void Func01( )
{
    MessageBox.Show( "Func 01" );
}



public void Func02( )
{
     MessageBox.Show( "Func 02" );
}
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Je ne crois pas qu'on puisse faire des pointeurs de fonction en C#. Sinon effectivement un Dictionary ca aurait été top :p
Messages postés
174
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
5
Merci beaucoup. Je suis tombé sur les délégués quelqueq temps après le message malgrès que j'avais bien cherché quand même. Mais l'exemple que j'avais trouvé était trop complexe. Merci donc pour ce code. A bientot sur csharpfr...

La connaissance est la plus grande des richesses.