ich die folgende Struktur haben:Angabe der Rückgabetyp einer abstrakten Methode von einer Basisklasse nach einer Unterklasse
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() {
}
}
Ich möchte eine abstrakte Methode zu schaffen, die unabhängig von Klasse gibt die konkrete Unterklasse ist. Wie Sie in diesem Beispiel sehen können, sollte die Methode in SubOne
List<SubOne>
zurückgeben, während die Methode in SubTwo
List<SubTwo>
zurückgeben sollte.
Welchen Typ muss ich in der Signatur angeben, die in der Base-Klasse deklariert ist?
[UPDATE]
Vielen Dank für die entsandten Antworten.
Die Lösung ist die abstrakte Klasse generisch, wie solche zu machen:
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() {
}
}
In Ihrem Update/Antwort, wie würden Sie eine Liste oder Sammlung der "Base" Klasse erstellen, die sowohl SubOne enthalten und SubZwei Objekte? –