运行 每个派生类型顺序相同的方法 c#

Run same method of each derived type sequentially c#

我有下面的代码,IVehicle 接口有 TestDrive 方法。 有一个抽象 class - Vehicles,它实现了 IVehicle 并且有一个 属性 TestDriveTime

有很多 child class 像 CarScooter 等(大约 25 个这样的 child class ).派生自 Vehicle 并且有自己的 TestDrive() 实现。

请帮我解决问题 -

  1. 如果我必须按顺序 运行 每一个 TestDrive,我在 Main() 中的代码是否正确?
  2. 如果所有childobjects都使用相同的TestDriveTime,我该如何设置?

.

public interface IVehicle 
{  
    void TestDrive();
}

public abstract class Vehicle : IVehicle
{
    public DateTime TestDriveTime { get; set; }
    abstract public void TestDrive();
}

public class Car : Vehicle
{
    public override void TestDrive()
    {
        // code for car testDrive
        // uses TestDriveTime
    }
}

public class Scooter : Vehicle
{
    public override void TestDrive()
    {
        // code for car testDrive
        // uses TestDriveTime same as car
    }
}

static void Main(string[] args)
{
    IVehicle vehicle = null;
    // 1. need to set the TestDriveTime which can be used for vehicles of all types. 

    vehicle = new Car();        
    vehicle.TestDrive();

    // 2. Need to run the TestDrive for all vehicles sequentially

    vehicle = new Scooter();
    vehicle.TestDrive();
}

1) 声明一个列表:

List<IVehicle> vehicles = new List<IVehicle>();

然后添加您所有的车辆:

vehicles.Add(new Car());
vehicles.Add(new Scooter());

并迭代:

        foreach (IVehicle v in vehicles)
            v.TestDrive();

2) 您可以设置 TestDriveTime 并将其用于所有对象:

v.TestDrive(测试驾驶时间);

将方法声明更改为:IVehicle.TestDrive(DateTime testDriveTime)