【发布时间】:2021-12-30 08:43:37
【问题描述】:
一个非常简单的基类:
class Figure {
public List<?> getList() {
var list = new List<same as child>();
//do some code
//filling list
return list;
}
}
这个继承类:
class Rectangle : Figure
{
}
class Cube : Figure
{
}
我知道我可以像这样使用泛型:
class Figure {
public List<T> getList<T>() {
var list = new List<T>();
//do some code
//filling list
return list;
}
}
Rectangle rec = new Rectangle();
List<Rectangle> lRec = rec.getList<Rectangle>();
Cube cube = new Cube();
List<Cube> lCube = cube.getList<Cube>();
但我想知道是否有替代方案
像这样:
Rectangle rec = new Rectangle();
List<Rectangle> lRec = rec.getList();
Cube cube = new Cube();
List<Cube> lCube = cube.getList();
【问题讨论】:
-
另一种方法,它有什么不同,为什么/你的目标是什么?
-
@CaiusJard 我不想每次调用方法时都写类型,因为总是与调用它的子类相同。
-
这打破了
SOLID大时间.. 通常Factory类用于此类任务
标签: c# inheritance