以下是我的数据结构:
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>
。
在基类中声明的签名中,我应指定什么类型?
[更新]
感谢已发布的答案。
解决方案是使抽象类成为通用类,如下所示:
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() {
}
}