运行 每个派生类型顺序相同的方法 c#
Run same method of each derived type sequentially c#
我有下面的代码,IVehicle
接口有 TestDrive
方法。
有一个抽象 class - Vehicles
,它实现了 IVehicle
并且有一个 属性 TestDriveTime
。
有很多 child class 像 Car
、Scooter
等(大约 25 个这样的 child class ).派生自 Vehicle
并且有自己的 TestDrive()
实现。
请帮我解决问题 -
- 如果我必须按顺序 运行 每一个
TestDrive
,我在 Main()
中的代码是否正确?
- 如果所有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)
我有下面的代码,IVehicle
接口有 TestDrive
方法。
有一个抽象 class - Vehicles
,它实现了 IVehicle
并且有一个 属性 TestDriveTime
。
有很多 child class 像 Car
、Scooter
等(大约 25 个这样的 child class ).派生自 Vehicle
并且有自己的 TestDrive()
实现。
请帮我解决问题 -
- 如果我必须按顺序 运行 每一个
TestDrive
,我在Main()
中的代码是否正确? - 如果所有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)