[Reflection] Passer des arguments typés dans un InvokeMember
Bonjour, dans le projet que je code j'ai besoin d'utiliser la réflection pour mettre a jour des fichiers librairie : dll.
Je parviens a créer des instances de classes, et a appeler les méthodes basiques, mais je n'arrive pas a spécifier les arguments lorsque ceux ci sont du type de la classe appelée dynamiquement via la réflection...
Exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
static object run(string classname, string methodname)
{
Assembly asm = Assembly.LoadFrom("C:\\Documents and Settings\\Marmotte\\Mes documents\\Visual Studio 2005\\Projects\\MaLibrairieTropBien\\MaLibrairieTropBien\\obj\\Release\\MaLibrairieTropBien.dll");
Type type = asm.GetType(classname);
object obj = asm.CreateInstance(classname);
object[] args = new object [2];
args[0] = "192.168.1.1";
//args[1] = ref asm.GetType(classname)
type.GetMethod(
object ret = type.InvokeMember(
methodname,
BindingFlags.Default
| BindingFlags.Public
| BindingFlags.Static
| BindingFlags.InvokeMethod,
null,
obj,
args
);
return ret;
} |
l'argument est configuré sur ces lignes, sauf que la ligne en commentaire ne marche bien entendu pas c'est juste pour vous donner une idée de ce que je veux envoyer (la référence d'une instance d'une classe de la dll)
Code:
1 2 3 4
|
object[] args = new object [2];
args[0] = "192.168.1.1";
//args[1] = ref asm.GetType(classname) |
Le prototype de la fonction que je veux appeler est:
Code:
1 2
|
Public Boolean MaMethodeTropBien (string ip, ref MonObjetTropBien instancetropbien); |
Je ne trouve pas grand chose en rapport avec ça sur internet, si ce n'est que tout le monde utilise des interfaces implementant IDisposal dont je ne saisi pas toujours l'utilité.
merci