У меня есть базовый класс с двумя конструкторами, требующий параметр:
public abstract class StoreBase
{
private readonly SomeObject_sobj;
protected StoreBase(SomeObject sobj)
{
_sobj = sobj;
}
protected StoreBase(OtherObject oobj)
{
_sobj = new SomeObject(oobj);
}
}
Тогда у меня есть производный класс:
public class MyDerived: StoreBase
{
}
Это вызывает ошибку компиляции как base class doesn't contain parameterless constructor
.
Насколько я понимаю, поскольку MyDerived не содержит конструктора, компилятор добавляет конструктор без параметров (это хорошо известно и не имеет ничего общего с производными классами). Однако, поскольку он наследуется от другого класса, конструктор базового класса должен запускаться первым, и нет способа определить, какой конструктор должен запускаться из пустого конструктора MyDerived.
По сути, я спрашиваю: могу ли я избежать копирования / вставки всех конструкторов из Base в класс Derived, если мне действительно не нужна дополнительная логика конструктора? Можно ли сказать «взять все конструкторы из базы», не добавляя их всех?
(И да, я знаю, что могу / должен преобразовать это в конструктор без параметров и в защищенный виртуальный метод Initialize (). Но я все еще задаюсь вопросом, могу ли я работать с конструкторами и все же избежать копирования / вставки)