я иметь следующую структуру:Указание типа возвращаемого абстрактного метода из базового класса в соответствии с подклассом
abstract class Base {
public abstract List<...> Get(); //What should be the generic type?
}
class SubOne : Base {
public override List<SubOne> Get() {
}
}
class SubTwo : Base {
public override List<SubTwo> Get() {
}
}
Я хочу создать абстрактный метод, который возвращает любой класс бетона класса саб. Итак, как вы можете видеть из примера, метод в SubOne
должен возвращать List<SubOne>
, тогда как метод в SubTwo
должен вернуть List<SubTwo>
.
Какой тип я могу указать в подписи, объявленной в базовом классе?
[UPDATE]
Спасибо за вывешенные ответы.
Решения сделать абстрактный класс родовым, как например:
abstract class Base<T> {
public abstract List<T> Get();
}
class SubOne : Base<SubOne> {
public override List<SubOne> Get() {
}
}
class SubTwo : Base<SubTwo> {
public override List<SubTwo> Get() {
}
}
В вашем обновление/ответ, как бы вы создать список или коллекцию класса «Base», который может содержать как SubOne и объекты SubTwo? –