Indexer des procedures

Résolu
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 - 26 janv. 2009 à 16:46
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 - 29 janv. 2009 à 15:02
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

crougni77 Messages postés 28 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 28 septembre 2009
26 janv. 2009 à 17:26
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
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
26 janv. 2009 à 22:38
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" );
}
3
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
26 janv. 2009 à 17:02
Je ne crois pas qu'on puisse faire des pointeurs de fonction en C#. Sinon effectivement un Dictionary ca aurait été top :p
0
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 5
29 janv. 2009 à 15:02
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.
0