调用问题,无法转换参数

时间:2013-07-10 21:41:24

标签: c# reflection unity3d

好的团结我尝试使用Invoke来调用以字符串格式给出的方法。我可以使用没有参数的工作,但使用参数失败,我无法理解。

public string SetCVar(string args)
{
    return "hello";
}


public string ParseCmdString(string str)
{
    // Find Cmd string
    string cmdStr = str.Split(' ')[0];

    if(cCmds.ContainsKey(cmdStr.ToLower()))
    {
        Cmd cmd = cCmds[cmdStr];

        System.Type         objType = cmd.obj.GetType();
        System.Reflection.MethodInfo method = objType.GetMethod(cmd.method, new System.Type[]{typeof(string)});

        return (string)method.Invoke(objType, new object[]{str});
    }


    return "Command not found!";
}

如果SetCVar没有参数,那么其他方面就没问题了,我得到以下错误。

ArgumentException: failed to convert parameters

1 个答案:

答案 0 :(得分:3)

您的Invoke调用应该在实例上调用,而不是类型:

return (string)method.Invoke(cmd.obj, new object[]{str});