2011-01-14 57 views
0

我的源代碼不執行任何操作。使用Console.Readline中的字符串調用方法

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語句,當用戶鍵入,比如命令?進入控制檯。標記器工作,該方法是公開的,這是我正在使用的代碼。任何幫助,將不勝感激。謝謝。

+0

究竟是什麼問題? – 2011-01-14 05:03:15

+0

你有沒有嘗試單步執行代碼?它不符合你的期望? – 2011-01-14 06:04:34

回答

0

使用GetMethod代替:

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

由於該方法是**static**,你需要通過null在第一個參數。

+0

如果你這樣做,檢查GetMethod(tok [0])返回的nullness。 – Neil 2011-01-14 05:14:03

1

如果你想找到靜態方法,你將不得不添加一個BindingFlagsEnum。

MethodInfo[] _m = _t.GetMethods(BindingFlags.Static|BindingFlags.Public);