これは以前に答えられているかもしれません。「動的メソッドのオーバーロードの解決」に関する質問はたくさんありますが、特にdynamic引数の受け渡しに関する質問はありません。次のコードではTest、 への最後の呼び出しMが解決できません (コンパイルされません)。エラーは次のとおりです: [の最初の 2 つのオーバーロード]の間で呼び出しがあいまいMです。
static void M(Func<int> f) { }
static void M(Func<string> f) { }
static void M(Func<dynamic> f) { }
static dynamic DynamicObject() {
return new object();
}
static void Test() {
M(() => 0);
M(() => "");
M(() => DynamicObject()); //doesn't compile
}
- 型が静的に認識されていないため、オーバーロードの受け入れに解決されないのはなぜ
dynamicですか? - オーバーロードされたメソッドを使用することさえ可能
dynamicですか? - これを解決する最善の方法は何ですか?