Comment passer une partie de la fonction a appler en parametre ?

Signaler
Messages postés
1
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
11 novembre 2008
-
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
-
Bonjour,

Je sais que ce que je veux faire et faisable, j'avais lu ça quelque part, mais je n'arrive pas à me rappeler ou.
Bref ce que je veux faire c'est appeler une fonction en passant une partie de son nom en parametre

disons que si j'avais qu'une seule fonction je l'appelerais comme ça:
validation.ValiderPersonne();

j'ai plusieurs validations que je voudrais appeler en se basant sur le nom du bouton sue lequel j'appuie

exemple : string x = button1.text;
puis appler ma fonction quelque chose comme : validation.'x'();    ou      validation.Valider'x'();

c'est cette syntaxe là que je cherche

Merci d'avance
Anass

1 réponse

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
21
Bonjour,

Pour ce faire, il te faut utiliser la 'reflection' (using System.Reflection).
Ainsi, tu pourras appeler une méthode avec son nom (string).

Exemple:
Class1 c = new Class1();//Mon objet ou validation pour toi
object ret = typeof(Class1).InvokeMember("Test", BindingFlags.InvokeMethod, null, c, null);//Appel de la méthode Test(), le dernier paramètre (à null ici) permet de spécifier les paramètres de la méthode.


Cependant, pour ton problème, je t'aurais bien proposé de faire plutôt comme ceci:

Création d'une interface qui contient une méthode 'bool Validate()' : ex: IValidation
Ensuite, tu implémentes toutes les classes qui contiennent une validation et 'héritant' de cette interface.

Ainsi, tu pourras appeler chaque classe comme ceci:
IValidation valid = (IValidation) Activator.CreateInstance(Type.GetType('namespace.nom_de_ta_classe'));
bool result = valid.Validate();


A voir,

Bonne journée,


Billou_13