Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Console.Readline中的字符串调用方法_C#_String_Class_Methods - Fatal编程技术网

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)。