C#DynamicInvoke TargetParameterCountException

时间:2014-06-15 13:37:45

标签: c# delegates invoke

我现在已经搜索了一段时间,但我找不到解决问题的方法。我有一个类在列表中堆栈方法,然后逐个调用它们。 使用返回值,参数或没有参数的方法,一切正常。但是如果方法有一个可选参数,它就不起作用。

这只是一种简单的测试方法:

static void TestMe(Int32 _wait = 5000)
{
    //Pretend to do stuff...
    System.Threading.Thread.Sleep(_wait);
}

我将方法添加到我的堆栈中:

static StackHandler __handler = new StackHandler();

__handler.AddMethod(new Action<Int32>(TestMe));

AddMethod方法创建一个新的ListItem并将其添加到内部列表中以跟踪所有堆叠方法。 然后处理程序想要调用方法:

private object invokeMethod(Delegate _method, params object[] _args)
{
    return _method.DynamicInvoke(_args);
}

我在System.Reflection.TargetParameterCountException方法中获得invokeMethod。我也尝试在没有args参数的情况下调用它,结果相同。 如果我像这样添加方法TestMe

__handler.AddMethodAsync(new Action<Int32>(Method), 6000);

它运行良好。

如何使用可选参数?

0 个答案:

没有答案