次のオーバーロードを使用しInvoke
て呼び出そうとしています: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!"});
明確な答えがないように思われる次の 2 つの質問を見つけました。
だから私の質問は、それができるかどうかです。はいの場合、どのように?
UDPATE
Daniel Hilgarth はparams
、名前付きパラメーターで yes を使用できることを示しています。このパターンを使用して彼の答えを統合しました:
Action method = () => { };
if (_dispatcher != null)
_dispatcher.Invoke(method: method, args: null);
else
method();