Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
Bonjour,
Pour l'appel voir par exemple http://msdn.microsoft.com/fr-fr/library/system.reflection.methodbase.invoke(VS.80).aspx (et sans doute GetMethod pour trouver la méthode concernée à partir du type).
Accessoirement, une explication de ce que l'on veut faire pourrait aider à donner des conseils plus pertinents. Si par exemple c'est pour faire un système de "plugin" il serait au moins possible d'utiliser une interface ce qui permettrait de pouvoir inclure d'autres types dans l'assembly plutôt que de prendre systématiquement le premier qui nous tombe sous la main (et il y a même toute une infrastructure dans .NET sur le sujet).
-- Patrice
"Delf" a écrit dans le message de news:4ab495d4$0$23517$
Bonjour.
J'ai une application WinForm qui doit appeler dynamiquement une méthode static d'une classe static qui est contenue dans une assembly externe.
Cette assembly externe contient 1 unique classe static composée d'une seule méthode static.
La WinForm n'a pas de référence sur cette assembly.
Ma question : est-il possible d'invoquer cette méthode sans en connaitre le type de sa classe via Reflection ?
Je pensais à quelque chose du genre :
Assemply ass = Assemply.Load(...); Type type = ass.GetTypes()[0];
t.CallMethod("MyMethod", new object[] { 'param1", 123 });
où CallMethod() serait une méthode magique :)
Au pire je peux rendre cette classe instanciable s'il le faut vraiment. Merci.
Bonjour,
Pour l'appel voir par exemple
http://msdn.microsoft.com/fr-fr/library/system.reflection.methodbase.invoke(VS.80).aspx
(et sans doute GetMethod pour trouver la méthode concernée à partir du
type).
Accessoirement, une explication de ce que l'on veut faire pourrait aider à
donner des conseils plus pertinents. Si par exemple c'est pour faire un
système de "plugin" il serait au moins possible d'utiliser une interface ce
qui permettrait de pouvoir inclure d'autres types dans l'assembly plutôt que
de prendre systématiquement le premier qui nous tombe sous la main (et il y
a même toute une infrastructure dans .NET sur le sujet).
--
Patrice
"Delf" <abuse@orange.fr> a écrit dans le message de
news:4ab495d4$0$23517$426a74cc@news.free.fr...
Bonjour.
J'ai une application WinForm qui doit appeler dynamiquement une méthode
static d'une classe static qui est contenue dans une assembly externe.
Cette assembly externe contient 1 unique classe static composée d'une
seule méthode static.
La WinForm n'a pas de référence sur cette assembly.
Ma question : est-il possible d'invoquer cette méthode sans en connaitre
le type de sa classe via Reflection ?
Je pensais à quelque chose du genre :
Assemply ass = Assemply.Load(...);
Type type = ass.GetTypes()[0];
t.CallMethod("MyMethod", new object[] { 'param1", 123 });
où CallMethod() serait une méthode magique :)
Au pire je peux rendre cette classe instanciable s'il le faut vraiment.
Merci.
Pour l'appel voir par exemple http://msdn.microsoft.com/fr-fr/library/system.reflection.methodbase.invoke(VS.80).aspx (et sans doute GetMethod pour trouver la méthode concernée à partir du type).
Accessoirement, une explication de ce que l'on veut faire pourrait aider à donner des conseils plus pertinents. Si par exemple c'est pour faire un système de "plugin" il serait au moins possible d'utiliser une interface ce qui permettrait de pouvoir inclure d'autres types dans l'assembly plutôt que de prendre systématiquement le premier qui nous tombe sous la main (et il y a même toute une infrastructure dans .NET sur le sujet).
-- Patrice
"Delf" a écrit dans le message de news:4ab495d4$0$23517$
Bonjour.
J'ai une application WinForm qui doit appeler dynamiquement une méthode static d'une classe static qui est contenue dans une assembly externe.
Cette assembly externe contient 1 unique classe static composée d'une seule méthode static.
La WinForm n'a pas de référence sur cette assembly.
Ma question : est-il possible d'invoquer cette méthode sans en connaitre le type de sa classe via Reflection ?
Je pensais à quelque chose du genre :
Assemply ass = Assemply.Load(...); Type type = ass.GetTypes()[0];
t.CallMethod("MyMethod", new object[] { 'param1", 123 });
où CallMethod() serait une méthode magique :)
Au pire je peux rendre cette classe instanciable s'il le faut vraiment. Merci.
Delf
Patrice a formulé ce samedi :
Pour l'appel voir par exemple http://msdn.microsoft.com/fr-fr/library/system.reflection.methodbase.invoke(VS.80).aspx (et sans doute GetMethod pour trouver la méthode concernée à partir du type).
Accessoirement, une explication de ce que l'on veut faire pourrait aider à donner des conseils plus pertinents. Si par exemple c'est pour faire un système de "plugin" il serait au moins possible d'utiliser une interface ce qui permettrait de pouvoir inclure d'autres types dans l'assembly plutôt que de prendre systématiquement le premier qui nous tombe sous la main (et il y a même toute une infrastructure dans .NET sur le sujet).
Je suis passé par une interface finalement. Merci.
Patrice a formulé ce samedi :
Pour l'appel voir par exemple
http://msdn.microsoft.com/fr-fr/library/system.reflection.methodbase.invoke(VS.80).aspx
(et sans doute GetMethod pour trouver la méthode concernée à partir du type).
Accessoirement, une explication de ce que l'on veut faire pourrait aider à
donner des conseils plus pertinents. Si par exemple c'est pour faire un
système de "plugin" il serait au moins possible d'utiliser une interface ce
qui permettrait de pouvoir inclure d'autres types dans l'assembly plutôt que
de prendre systématiquement le premier qui nous tombe sous la main (et il y a
même toute une infrastructure dans .NET sur le sujet).
Je suis passé par une interface finalement.
Merci.
Pour l'appel voir par exemple http://msdn.microsoft.com/fr-fr/library/system.reflection.methodbase.invoke(VS.80).aspx (et sans doute GetMethod pour trouver la méthode concernée à partir du type).
Accessoirement, une explication de ce que l'on veut faire pourrait aider à donner des conseils plus pertinents. Si par exemple c'est pour faire un système de "plugin" il serait au moins possible d'utiliser une interface ce qui permettrait de pouvoir inclure d'autres types dans l'assembly plutôt que de prendre systématiquement le premier qui nous tombe sous la main (et il y a même toute une infrastructure dans .NET sur le sujet).
Je suis passé par une interface finalement. Merci.