J'ai la structure suivante:Spécification du type de retour d'une méthode abstraite d'une classe de base selon une sous classe
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() {
}
}
Je veux créer une méthode abstraite qui retourne quelle que soit la classe de la classe concrète sous est. Ainsi, comme vous pouvez le voir dans l'exemple, la méthode dans SubOne
doit renvoyer List<SubOne>
tandis que la méthode dans SubTwo
doit renvoyer List<SubTwo>
.
Quel type dois-je spécifier dans la signature déclarée dans la classe de base?
[UPDATE]
Merci pour les réponses affichées.
La solution est de faire la classe abstraite générique, comme par exemple:
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() {
}
}
Dans votre mise à jour/réponse, comment voulez-vous créer une liste ou d'une collection de la classe « de base » qui peut contenir à la fois SubOne et SubTwo objets? –