Reflection

Résolu
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 10 janv. 2005 à 19:26
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 10 janv. 2005 à 20:54
Bonsoir a tous



Voila, j'ai une dll qui implémente plusieurs méthodes static qui effectuent un traitement sur une image passée en paramètre.



Pour tester ces methodes, je crée un petite application de test avec
une PictureBox, et une ListView, dans laquelle je met la liste des
fonctions existant dans la dll.

Pour remplir cette liste, plutot que de tout coder en dur, j'utilises
la reflection. (d'autant que la dll evolue, donc si je dois modifier
mon prog de test a chaque fois que j'ajoute des fonctions dans la dll,
ca risque d'etre chiant).

Les fonctions s'affichent bien dans la liste. Par contre, maintenant,
j'aimerais savoir si vous pouviez me dire comment je peux faire pour
invoquer la fonction quand je clique sur l'item correspondant.
(et en passant l'image de ma PictureBox en parametre).



Question subsidiaire : Y'a un moyen de ne pas affichier les méthodes de
la class Object dans la ListView, autrement que de les filtrer par leur
nom ?



Merci



Mx

7 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 janv. 2005 à 19:51
et pour la question de base (bon, perso j'ai ajouter le tableau de MethodInfo à un listbox et mit DisplayMember sur Name pour gagner du temps) :


MethodInfo methode = (MethodInfo)listBox_Methods.SelectedItem;
methode.Invoke(null, new object[]{pictureBox.Image});
pictureBox.Invalidate();

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 janv. 2005 à 20:17
euh tu as parler de methodes statiques, donc Invoke(null,...), pck là apparemment tu lui demande d'invoquer la methode sur l'instance de ton form alors forcement...

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 janv. 2005 à 19:46
Pour la question subsidiaire : spécifier BindingFlags.DeclaredOnly au listing des méthodes devrait suffire.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
10 janv. 2005 à 19:56
Merci coq .



En fait j'en etais la dans l'evenement SelectedIndexChanged, mais ca plantait encore



picture.Image = ((Image)((MyListViewItem)sender).MI.Invoke(this, new object[] { picture.Image }));



Donc je vais voir par rapport a tes réponses !



Mx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
10 janv. 2005 à 19:58
(J'oubliais de préciser que j'avais fait heriter MyListViewItem de la
classe ListViewItem et que j'y avais ajouter une Propriété MethodInfo
'MI' )
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
10 janv. 2005 à 20:49
Bon, apres avoir mélanger ta proposition et mon code de base, et
quelques erreurs de ma part (cast d'une string en MethodInfo par
exemple ) j'ai enfin reussi a le faire marcher.



Merci pour ton aide coq :)
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 janv. 2005 à 20:54
ah oui le cast il devait pas aimer lol

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous