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

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

Сообщение Anonymous »

При рефакторинге кода я столкнулся со странной ошибкой компиляции:


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


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

Код: Выделить всё

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)
Итак, я немного запутался. Почему я должен вставлять это отвратительное приведение — почему компилятор не может понять, что я имею в виду?

Подробнее здесь: https://stackoverflow.com/questions/809 ... od-that-ta

Вернуться в «C#»