#c# #templates #generics
#c# #шаблоны #обобщения
Вопрос:
Я пытаюсь заставить абстрактную функцию возвращать список пользовательского типа данных во время выполнения.
//Абстрактный класс: Integr
abstract public List < object > getRefills();
//Реализация в производном классе: TMTStandard
public override List < TMTStandardRefill > getRefills()
{
List<TMTStandardRefill> refills = db.TMTStandarRefills.ToList();
return refills;
}
// Я вызываю функцию для привязки моих данных к источнику данных gridview
dataGridView1.DataSource = integr.getRefills();
Будем признательны за любую помощь. Я просмотрел дженерики, но не смог найти решение.
Комментарии:
1. Какую ошибку вы получили при использовании вышеупомянутого подхода?
2. C # не поддерживает ковариацию возвращаемого типа при виртуальных переопределениях.
Ответ №1:
Создайте Integr
универсальный из T
:
public abstract class Integr<T>
{
public abstract IList<T> GetRefills();
}
public class TMTStandard : Integr<TMTStandardRefill>
{
public override IList<TMTStandardRefill> GetRefills()
{
// ...
}
}