1

ユニティではわかりました 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
4

1 に答える 1