C# 使用Console.Readline中的字符串调用方法
我的源代码什么都不做C# 使用Console.Readline中的字符串调用方法,c#,string,class,methods,C#,String,Class,Methods,我的源代码什么都不做 if (tok[1] == "?") { Type _t = typeof(Help); Help _h = new Help(); MethodInfo[] _m = _t.GetMethods(); foreach (MethodInfo m in _m) { if (m.Name.CompareTo(tok[0]) == 0) { m.Invoke(_h, null);
if (tok[1] == "?")
{
Type _t = typeof(Help);
Help _h = new Help();
MethodInfo[] _m = _t.GetMethods();
foreach (MethodInfo m in _m)
{
if (m.Name.CompareTo(tok[0]) == 0)
{
m.Invoke(_h, null);
}
}
}
当用户键入(比如)命令时,它应该调用一个从不同类到if语句的静态方法?进入控制台。标记器工作,方法是公共的,这就是我正在使用的代码。任何帮助都将不胜感激。谢谢。改用
GetMethod
:
typeof(Help).GetMethod(tok[0]).Invoke(null,null);
由于方法是
**static**
,因此需要在第一个参数中传递null
。如果要查找静态方法,必须添加BindingFlagsEnum
MethodInfo[] _m = _t.GetMethods(BindingFlags.Static|BindingFlags.Public );
你到底有什么问题?你有没有尝试过单步执行代码?它在哪里做不到您所期望的?如果您像这样做,那么在GetMethod(tok[0])返回时检查null值。仍然什么都不做。当它没有抛出异常、错误或任何东西时,我如何找出问题所在?我使用的是c#express 2010。发布帮助类中的声明。在调用之前,您可能希望加入一个检查(m.GetParameters().Length==0)。