C#链接参数函数调用

sel*_*guy 3 c# wrapper params

是否有可能在C#中接受一个params参数,然后将其作为params列表传递给另一个函数?如上所述,如果我没有弄错的话,下面的函数将args作为一个类型数组的单个参数传递object.这里的目标是不言而喻的.

//ScriptEngine
public object[] Call(string fnName, params object[] args)
{
    try{
        return lua.GetFunction(fnName).Call(args);
    }
    catch (Exception ex)
    {
        Util.Log(LogManager.LogLevel.Error, "Call to Lua failed: "+ex.Message);
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

lua.GetFunction(fnName).Call(args);是对我的代码之外的调用,它接受param object[].

Ser*_*rvy 7

如果Call您所呼叫的方法的签名接受了,params object[] args那么您错了.它不考虑argsthpe的单个对象,而是object包含在另一个数组中.它认为它是整个参数列表,这是你想要的.它会完全正常工作.

  • @selkathguy号.那不会编译.您需要传递两个对象和一个数组,或两个对象和任意数量的其他对象.与其他语言不同,您不能将数组作为任意函数的参数列表传递(不使用反射). (2认同)