Вызовите метод, используя строку из Console.Readline - PullRequest
0 голосов
/ 14 января 2011

У меня есть исходный код, который ничего не делает.

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, когда пользователь вводит, скажем, команду? в консоль. Токенизатор работает, метод общедоступен, и это код, который я использую. Любая помощь будет оценена. Спасибо.

Ответы [ 2 ]

1 голос
/ 14 января 2011

Если вы хотите найти статические методы, вам нужно добавить BindingFlagsEnum.

MethodInfo[] _m = _t.GetMethods(BindingFlags.Static|BindingFlags.Public );
0 голосов
/ 14 января 2011

Используйте GetMethod вместо:

typeof(Help).GetMethod(tok[0]).Invoke(null,null);

Поскольку метод **static**, вам нужно передать null в первом параметре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...