tengo la siguiente estructura:Especificación del tipo de retorno de un método abstracto de una clase base de acuerdo con un Clase Sub
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() {
}
}
que quieren crear un método abstracto que devuelve cualquier clase la clase sub concreto es. Entonces, como puede ver en el ejemplo, el método en SubOne
debe devolver List<SubOne>
mientras que el método en SubTwo
debe devolver List<SubTwo>
.
¿Qué tipo especifico en la firma declarada en la clase Base?
[ACTUALIZACIÓN]
Gracias por las respuestas publicadas.
La solución es hacer que la clase abstracta genérica, como por ejemplo:
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() {
}
}
En su actualización/respuesta, ¿cómo crear una lista o colección de la clase "base" que puede contener tanto SubOne y SubTwo objetos? –