这可能之前已经回答过了。我看到许多“动态方法重载解析”问题,但没有一个专门处理传递dynamic
参数的问题。在下面的代码中Test
,最后一次调用M
无法解析(它不会编译)。错误是:[前两个重载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
吗? - 解决此问题的最佳方法是什么?