MethodInfo.Invoke可以指定一个Object[]来给要调用的方法传递参数,但是如何使用Out参数呢,主要是如何获取
其实执行方法后,方法out传出的参数会放到传入的object数组的对应位置,所以我们在对应位置直接访问就可以了
ref参数也是一样的
public class Program1
{
public void OprtParams(string param1, out string param2, ref string param3, ref int param4)
{
string s = "param1=" + param1 + "param3=" + param3 + "param4=" + param4.ToString();
param2 = "param2changed";
param3 = "param3changed";
param4++;
}
public static void RunMethod()
{
MethodInfo mi = typeof(Program1).GetMethod("OprtParams");
object[] parameters = new object[] { "param1", "param2", "param3", 1 };
mi.Invoke(new Program1(), parameters);
string s = "param1=" + parameters[0] + "param2=" + parameters[1] + "param3=" + parameters[2] + "param4=" + parameters[3].ToString();
Console.WriteLine(s);
}
static void Main(string[] args)
{
RunMethod();
Console.Read();
}
}