У меня есть базовый класс с двумя конструкторами, для которого требуется параметр:
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(), но мне все еще интересно, могу ли я работать с конструкторами и все же избегать копирования/вставки)