2016-04-12 5 views
0

Ich habe ein Problem mit meinem Invoke() Werfen einer TargetException.TargetException on Invoke

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)); 
} 

Ich rufe dann Commands[input[0]].Method.Invoke(this, input.ToArray<object>());, aber es hat eine TargetException mit der Nachricht

Objekt wirft nicht Zieltyp entsprechen.

Benötige ich eine Besetzung? Ich bin ziemlich verloren, und ich würde jede Hilfe zu schätzen wissen!

+2

Welche UI-Framework/Plattform ist das? – Dai

+2

Der Fehler versucht, Ihnen mitzuteilen, dass Sie versuchen, eine Methode vom falschen Typ aufzurufen. Überprüfen Sie Ihre Typen – SLaks

+1

Was ist die Signatur der Methode in Frage? Sie versuchen, ein Array von Objekten an sie zu übergeben. Ist das korrekt? Überprüfen Sie den Namen Ihrer Methode usw. Nimmt UI.Close() ein Array von Objekten als Parameter, unter der Annahme, dass die Eingabe [0] = ": q" ist? – ManoDestra

Antwort

1

Basierend auf den obigen Kommentaren versuchen Sie, eine Aktion (UI.Close) aufzurufen, übergeben jedoch ein Array von Objekten als Parameter an diese Aktion, die keine Parameter aufweist und daher diese Ausnahme verursacht.

ändern ...

input.toArray<object>() 

zu ...

new object[0], or new object[] {} // or perhaps even just null may do the trick.