Invoke上的TargetException

时间:2016-04-12 18:23:14

标签: c# dictionary delegates invoke

我的Invoke()抛出了一个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
  

对象与目标类型不匹配。

我需要演员吗? 我很失落,我很感激任何帮助!

1 个答案:

答案 0 :(得分:1)

根据上面的注释,您正在尝试调用Action(UI.Close),但是您将一个对象数组作为参数传递给此操作,该操作没有参数,因此会产生此异常。

更改...

input.toArray<object>()

为...

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