У меня есть базовый класс (Компания), и я хочу получить от него несколько классов (скажем, CompanyA, CompanyB и т. д.).
Этот базовый класс имеет абстрактный метод, поэтому все производные классы должны переопределять и реализовывать его.
Загвоздка в том, что этот абстрактный метод должен возвращать список любых объектов, производных от данного класса (скажем, CustomerContact).
Я попытался определить этот метод в базовом классе следующим образом:
public class Company
{
...
public abstract List<T> getContacts<T>() where T : CustomerContact;
}
Это не дает ошибки компиляции. Я пытаюсь переопределить этот метод в производном классе следующим образом:
public class CompanyA : Company
{
...
public override List<T> getContacts<T>()
{
return _contacts;
}
}
Здесь _contacts — это список класса «CompanyAContact», где этот класс является производным от «CustomerContact».
Однако я не могу переопределить такой метод. Ошибка, которую я получаю:
Cannot implicitly convert type 'System.Collections.Generic.List<CompanyAContact>' to 'System.Collections.Generic.List<T>'