2009-05-07 5 views
2

J'ai un objet ojbect avec une fonction qui prend un argument out. Je veux appeler cette fonction en utilisant Invoke de la réflexion. Cependant, je ne peux pas trouver un moyen de spécifier que c'est un argument out, car il est retourné null.Appel d'une fonction avec un argument out utilisant Invoke

Class Foo 
{ 
    void Do(out string a){ a="fx call"; } 
} 

Foo f = new Foo(); 
string param = string.Empty; 
f.GetType().GetMethod("Do").Invoke(f, new object[] { param }); 
Assert.IsTrue(! string.IsNullOrEmpty(param)); 

L'appel ci-dessus échoue, puisque param est vide. Comment puis-je spécifier que l'argumetn qui est passé est "out"?

Merci! La réflexion mettra à jour la valeur dans le tableau, pas la valeur passée dans le tableau.

Répondre

7

Tenez-vous sur la référence du tableau et la valeur sera mise à jour en ligne.

string param = string.Empty; 
object[] args = new object[] {param}; 
f.GetType().GetMethod("Do").Invoke(f, args); 
param = (string)args[0]; 
Questions connexes