在重构一些代码时,我遇到了这个奇怪的编译错误:
构造函数调用需要动态调度,但不能因为它是构造函数初始值设定项的一部分.考虑转换动态参数.
当尝试调用采用动态参数的基本方法/构造函数时,似乎会发生这种情况.例如:
class ClassA
{
public ClassA(dynamic test)
{
Console.WriteLine("ClassA");
}
}
class ClassB : ClassA
{
public ClassB(dynamic test)
: base(test)
{
Console.WriteLine("ClassB");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将参数转换为object,它会起作用,如下所示:
public ClassB(dynamic test)
: base((object)test)
Run Code Online (Sandbox Code Playgroud)
所以,我有点困惑.为什么我必须把这个令人讨厌的演员 - 为什么编译器不能弄明白我的意思?