在使用反射调用静态方法时,如何通过ref传递参数?

Dea*_*ane 12 .net c# reflection

我正在使用反射在对象上调用静态方法:

MyType.GetMethod("MyMethod", BindingFlags.Static).Invoke(null, new object[] { Parameter1, Parameter2 });
Run Code Online (Sandbox Code Playgroud)

你如何通过ref传递参数,而不是按值传递?我假设它们默认是按值计算的.第一个参数(数组中的"Parameter1")应该是ref,但我无法弄清楚如何以这种方式传递它.

Jar*_*Par 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"
  }
}
Run Code Online (Sandbox Code Playgroud)