我现在已经搜索了一段时间,但我找不到解决问题的方法。我有一个类在列表中堆栈方法,然后逐个调用它们。 使用返回值,参数或没有参数的方法,一切正常。但是如果方法有一个可选参数,它就不起作用。
这只是一种简单的测试方法:
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);
它运行良好。
如何使用可选参数?