我有一个带有一个out参数的函数的ojbect.我想用反射的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));
Run Code Online (Sandbox Code Playgroud)
上面调用断言失败,因为param为Empty.如何指定传递的参数是"out"?
谢谢!
Reflection将更新数组中的值,而不是传递给数组的值.保持数组引用,值将以内联方式更新.
string param = string.Empty;
object[] args = new object[] {param};
f.GetType().GetMethod("Do").Invoke(f, args);
param = (string)args[0];
Run Code Online (Sandbox Code Playgroud)