2011-01-14 18 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文、ときに、ユーザーの種類、たとえば、コマンドに別のクラスから静的メソッドを呼び出すことになっていますか?コンソールに入れます。 tokenizerが動作し、メソッドはpublicであり、これは私が使用しているコードです。どんな助けもありがとう。ありがとう。

+0

あなたの問題は何ですか? –

+0

コードをステップ実行しようとしましたか?あなたは何を期待していませんか? –

答えて

0

使用GetMethod代わり:

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

方法が**static**あるので、あなたは、最初のパラメータにnullを渡す必要があります。

+0

このようにすれば、GetMethod(tok [0])の返り値にヌルネスをチェックします。 – Neil

+0

まだ何もしません。例外、エラー、または何も発生しないときに、どのように問題が発生しているかを知るにはどうすればよいですか?私はC#express 2010を使用しています。 – apophis

+0

あなたのヘルプクラスからの宣言を投稿してください。 – Neil

1

静的メソッドを検索する場合は、BindingFlagsEnumを追加する必要があります。

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

電話する前に、(m.GetParameters()。Length == 0)をチェックすることができます。 – Neil

関連する問題