c# - 关于重构为抽象类的基本问题

标签 c# inheritance abstract-class

这可能是一个初学者问题,但是否有一种标准方法可以将 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; }
}

谢谢

最佳答案

我认为使用FastSlow policy可以帮助为给定的汽车类型放置正确的车轮(其中 CarWheel 都取决于策略,并且 Car 对象具有,比如说,一个私有(private)的轮子集合)。

关于c# - 关于重构为抽象类的基本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782906/

相关文章:

c# - ASP.Net 中哪个更快?

c# - 为什么不能将值分配给类主体中的属性,除非在其声明中?

oop - 抽象类、接口(interface)、mixins

java - 抽象类中的方法返回实现它的类的实例

oop - Go中扩展类型的访问方法

python - 如何在 Python 3.4+ 中写入抽象属性

c# - 如果添加了工具箱中的参数,Microsoft Report Viewer 定义会从 2008 年更改为 2016 年

c# - 连接到 VPN 后获取结果

C#协变和继承

抽象类中的java枚举