2016-04-12 7 views
0

Invoke()にTargetExceptionをスローする際に問題があります。呼び出しの際のTargetException

public Controller(SystemUI ui, System system) 
{ 
    UI = ui; 
    System = system; 

    UI.CommandEntered += ParseCommand; 

    Commands = new Dictionary<string, Delegate>(); 
    Commands.Add(":q", new Action(UI.Close)); 
} 

私はその後Commands[input[0]].Method.Invoke(this, input.ToArray<object>());を呼ぶが、それは、ターゲット型と一致しないメッセージ

オブジェクトでTargetExceptionをスローします。

キャストが必要ですか? 私はかなり失われています。私は助けていただければ幸いです!

+2

は、このですか? – Dai

+2

エラーがあなたに伝えようとしているので、間違ったタイプのメソッドを呼び出そうとしています。タイプを確認してください – SLaks

+1

問題のメソッドのシグニチャーは何ですか?あなたはそれにオブジェクトの配列を渡そうとしています。あれは正しいですか?メソッド名などを確認します。UI.Close()は、入力[0] = ":q"と仮定して、オブジェクトの配列をパラメータとして取りますか? – ManoDestra

答えて

1

上記のコメントに基づいて、アクション(UI.Close)を呼び出そうとしていますが、オブジェクトの配列をこのアクションにパラメータとして渡しています。このため、この例外は発生しません。

変更...

input.toArray<object>() 

に...どのようなUIフレームワーク/プラットフォーム

new object[0], or new object[] {} // or perhaps even just null may do the trick. 
関連する問題