这可能是一个初学者的问题,但是否有一种标准方法可以将 Wheel 属性的副本重构到抽象类中,但仍保持对 Part 类型的显式转换。假设我们必须防止将 FastCarWheel 放在 SlowCar 上,并且有很多属性就像这个一样。
abstract class Car {}
class FastCar : Car
{
public FastCarWheel Wheel { get; set; }
}
class SlowCar : Car
{
public SlowCarWheel Wheel { get; set; }
}
abstract class WheelPart {}
class FastCarWheel: WheelPart {}
class SlowCarWheel: WheelPart {}
在这种情况下,只允许这种类型的复制是否很常见?我正在考虑使用泛型,但似乎我正在解决这个问题,并且对于每个以这种方式运行的附加属性来说,情况会变得更糟。
abstract class Car <P>
where P : Part
{
protected abstract P Wheel { get; set; }
}
谢谢