私は次の構造を持っています:
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>
ます。
Base クラスで宣言された署名で指定する型は何ですか?
[アップデート]
投稿された回答に感謝します。
解決策は、次のように抽象クラスをジェネリックにすることです。
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() {
}
}