У меня есть следующая структура:
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() {
}
}