我正在尝试使用以下重载调用Invoke
a :Dispatcher
public object Invoke(Delegate method, params object[] args);
我想使用命名参数,但似乎找不到带有 params 修饰符的参数的语法。以下所有内容都不会编译:
dispatcher.Invoke(method: () => { }, args: {});
dispatcher.Invoke(method: () => { }, args: new object[0]);
dispatcher.Invoke(method: () => { }, args: null);
dispatcher.Invoke(method: () => { }, args: new object[] {});
object[] foo = {};
dispatcher.Invoke(method: () => { }, args: foo);
dispatcher.Invoke(method: () => { }, args: new[] {"Hello", "World!"});
我发现这两个问题似乎没有明确的答案:
所以我的问题是:能不能做到?如果是,如何?
UDPATE
Daniel Hilgarth 表明 yesparams
可以与命名参数一起使用。我使用这种模式整合了他的答案:
Action method = () => { };
if (_dispatcher != null)
_dispatcher.Invoke(method: method, args: null);
else
method();