Я пытаюсь наследовать класс из абстрактного класса с общим свойством. Я думаю, что мне не хватает чего-то реального. Единственный способ избавиться от этой ошибки - избавиться от конструктора базового класса. Но если я это сделаю, то у моего класса будет недостаток цели.Наследование от общего класса с абстрактным свойством
Ошибка
CS7036 Ошибка Там не аргумент, учитывая, что соответствует требуется формальный параметр 'Propa' ...
Базовый класс
public abstract class BaseClass<T> where T:class
{
public string propA{ get; set; }
public int propB{ get; set; }
public IEnumerable<T> propC { get; set; }
public BaseClass(string propA, int propB, IEnumerable<T> propC)
{
this.propA = propA;
this.propB = spropB;
this.propC = propC;
}
public abstract IEnumerable<T> Method1();
public abstract string Method2();
public abstract void Method3();
}
Производный класс
public class DerivedClass: BaseClass<SomeClass>
{
public override IEnumerable<SomeClass> Method1()
{
//Code Here
}
public override string GetDefaultSortField()
{
//Code Here
}
public override void SetSortParams()
{
//Code Here
}
}
Возможно, вместо абстрактного базового класса вы должны использовать интерфейс (например, 'IBaseClass'). Затем вы можете проектировать конструкторы на основе ваших потребностей. –
Jure
Это не имеет ничего общего с абстрактными классами или дженериками - это просто вопрос конструктора по умолчанию в производном классе, вызывающий конструктор в базовом классе, не передающий аргументы. Ваш базовый класс может быть конкретным и неэквивалентным, и у вас будет такая же проблема. Что вы хотите, если вы вызываете 'new DerivedClass()'? Вы ожидаете, что трехкомпонентный конструктор в «BaseClass» будет вызван, и если да, то какие аргументы вы ожидаете получить от него? –
С VS2015 F10 также помогает автоматически создавать этот производный конструктор –