我有以下结构:
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() {
}
}
我想创建一个抽象方法,它返回具体子类是什么类。因此,正如您从示例中看到的那样, in 中的方法SubOne
应该返回List<SubOne>
,而 in 中的方法SubTwo
应该返回List<SubTwo>
。
我在基类中声明的签名中指定什么类型?
[更新]
感谢您发布的答案。
解决方案是使抽象类通用,如下所示:
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() {
}
}