假设我有一个名为 Shape 的基类。然后是一些子类,例如圆形和方形。
然后让我们在另一个名为 GetShape 的类中创建一个方法:
public Shape GetShape()
{
return new Circle();
}
好吧,我的想法是,我可以传入一个 shapeType,然后返回一个强类型的 Shape 子类。上面的例子是对真实代码的大规模简化,但我认为它明白了这一点。
那么当我调用这个方法时它看起来像
var shapeCreator = new ShapeCreator();
Circle myCircle = shapeCreator.GetShape();
唯一的问题是它甚至不会运行,因为它需要强制转换。
这实际上会起作用:
Circle myCircle = (Circle) shapeCreator.GetShape();
我对那个演员并不疯狂,我怎样才能避免它并且仍然完成一种让方法返回基类的方法,以便我可以返回任何兼容的子类。