Вызов функции с аргументом out с помощью Invoke - PullRequest
2 голосов
/ 07 мая 2009

У меня есть объект с функцией, которая принимает аргумент out. Я хочу вызвать эту функцию, используя Invoke отражения. Тем не менее, я не могу найти способ указать, что это аргумент out, так как он возвращается null.

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));

Вышеприведенный вызов утверждение не выполняется, так как параметр пуст. Как я могу указать, что передаваемый аргумент "out"?

Спасибо!

1 Ответ

7 голосов
/ 07 мая 2009

Reflection обновит значение в массиве, а не значение, переданное в массив. Удерживайте ссылку на массив, и значение будет обновлено в строке.

string param = string.Empty;
object[] args = new object[] {param};
f.GetType().GetMethod("Do").Invoke(f, args);
param = (string)args[0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...