Почему я получаю эту ошибку компиляции при попытке вызвать базовый конструктор / метод, который принимает динамический аргумент?

Во время рефакторинга кода я обнаружил странную ошибку компиляции:

Вызов конструктора должен быть отправлен динамически, но не может быть, потому что он является частью инициализатора конструктора. Подумайте о приведении динамических аргументов.

Похоже, это происходит при попытке вызвать базовые методы / конструкторы, которые принимают динамические аргументы. Например:

class ClassA
{
    public ClassA(dynamic test)
    {
        Console.WriteLine("ClassA");
    }
}

class ClassB : ClassA
{
    public ClassB(dynamic test)
        : base(test)
    {
        Console.WriteLine("ClassB");
    }
}

Это сработает, если я приведу аргумент к объекту , например:

public ClassB(dynamic test)
    : base((object)test)

Итак, я немного запутался. Почему я должен использовать это противное приведение - почему компилятор не может понять, что я имею в виду?

46
задан Danny Tuppeny 11 November 2011 в 19:32
поделиться