我正在使用反射在对象上调用静态方法:
MyType.GetMethod("MyMethod", BindingFlags.Static).Invoke(null, new object[] { Parameter1, Parameter2 });
如何通过ref传递参数,而不是按值传递?我假设它们默认是按值计算的。第一个参数(数组中的“Parameter1”)应该是ref,但我无法弄清楚如何以这种方式传递它。
答案 0 :(得分:16)
对于参考参数(或在C#中输出),反射会将新值复制到与原始参数相同位置的对象数组中。您可以访问该值以查看更改的参考。
public class Example {
public static void Foo(ref string name) {
name = "foo";
}
public static void Test() {
var p = new object[1];
var info = typeof(Example).GetMethod("Foo");
info.Invoke(null, p);
var returned = (string)(p[0]); // will be "foo"
}
}
答案 1 :(得分:1)
如果您致电Type.GetMethod
并使用BindingFlag
的{{1}},则无法找到您的方法。删除标记或添加BindingFlags.Static
,它将找到静态方法。
BindingFlags.Public