これは以前に答えられているかもしれません。「動的メソッドのオーバーロードの解決」に関する質問はたくさんありますが、特に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
ですか? - これを解決する最善の方法は何ですか?