高分求教:如何通过反射调用一个具有“被params关键字修饰的参数”的函数?
定义了一个静态函数GetAllDesc(),其参数个数是不固定的,如desc1,desc2,desc3...所以我给函数的参数加了params关键字:
internal static string GetAllDesc(params string[] descs)
{
......
}
然后,在另一处通过反射调用该函数:
//反射得到运行时函数
string functionName = "GetAllDesc";
MethodInfo function = this.GetType().GetMethod(functionName);
//准备参数数组
string[] parameters = new string[] { "desc1", "desc2", "desc3", "desc4" };
//然后,调用运行时函数
function.Invoke(null, parameters);
在这里发生异常,提示“参数个数不匹配”。
我觉得如果function不是运行时函数的话,就不会出现这个异常,因为function的参数已经采用了params关键字啊,这意味著不管调用者传给它多少个参数,它都应该照单全收。可是在运行时,CLR是不是认为string[]只代表一个参数,因此抛出异常呢?
请教:应该怎样修改程序,才能让这个运行时的function可以接受任意个数的参数?