从层次结构中检索特定的类

时间:2018-07-31 19:56:13

标签: c# reflection hierarchy

我的程序的任务是模拟汽车服务站的工作流程。其中一部分是对进来的车辆(可以是汽车,卡车或公共汽车)进行注册。根据车辆类型,程序必须选择可以修理的那些零件。 用于汽车-船体,断裂,车轮。 对于卡车-与轿车和液压系统相同。 对于公交车-与“汽车和插页式广告”相同。

我创建了下一组类:

//vehicle types
public abstract class Vehicle {}

public class Car : Vehicle {}

public class Truck : Vehicle {}

public class Bus : Vehicle {}

//vehicle parts types
public abstract class VehiclePart
{

    public short State { get; set;}

    public string Name
    {
        get { return this.GetType().Name; }
    }
}

public abstract class CarVehiclePart : VehiclePart { }

public abstract class TruckVehiclePart : VehiclePart { }

public abstract class BusVehiclePart : VehiclePart { }


public class Hull : CarVehiclePart { }

public class Wheels : CarVehiclePart { }

public class Breaks : CarVehiclePart { }

public class Hydraulics : TruckVehiclePart { }

public class Interior : BusVehiclePart { }

public class Handrail : BusVehiclePart { }

我试图实现的是获得完整的类清单,并介绍每种类型的车辆的零件。 我可以对这些类进行操作吗?还是应该重写这种层次结构?

谢谢。

1 个答案:

答案 0 :(得分:0)

我建议将零件建模为枚举而不是类。同样,您可以将多态与GetPartsToRepair方法一起使用。当对象为Car类型时,将返回每种车辆类型需要修理的3个零件;如果其类型为Truck,则添加液压;如果其类型为Bus,则添加内饰。

会是这样的:

public enum VehiclePart{
  Hull,
  Wheels,
  Breaks,
  Hydraulics,
  Interior,
  Handrail,
}

//vehicle types
public abstract class Vehicle {
    public virtual List<VehiclePart> GetPartsToRepair(){
        return new List<VehiclePart>(){ VehiclePart.Hull, VehiclePart.Wheels, VehiclePart.Breaks };
    }
}

public class Car : Vehicle { }

public class Truck : Vehicle 
{
    public override List<VehiclePart> GetPartsToRepair(){
        var result = base.GetPartsToRepair();
        result.Add(VehiclePart.Hydraulics);
        return result;
    }
}

public class Bus : Vehicle 
{
    public override List<VehiclePart> GetPartsToRepair(){
        var result = base.GetPartsToRepair();
        result.Add(VehiclePart.Interior);
        return result;
    }
}