好的团结我尝试使用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
答案 0 :(得分:3)
您的Invoke
调用应该在实例上调用,而不是类型:
return (string)method.Invoke(cmd.obj, new object[]{str});