首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按顺序运行每种派生类型的相同方法c#

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

Stack Overflow用户
提问于 2016-01-29 11:15:50
回答 1查看 74关注 0票数 0

我有下面的代码与IVehicle接口有TestDrive方法。有一个抽象类- Vehicles,它实现IVehicle &具有一个属性TestDriveTime

有许多子类,如CarScooter等(大约25个这样的子类)。它们是从Vehicle派生的&它们有自己的TestDrive()实现。

请帮我解决问题-

  1. 如果我必须按顺序运行这些TestDrive,那么Main()中的代码正确吗?
  2. 如果所有子对象都使用相同的TestDriveTime,我应该如何设置它?

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-29 11:25:44

1)宣布一份清单:

代码语言:javascript
复制
List<IVehicle> vehicles = new List<IVehicle>();

然后加上你所有的车辆:

代码语言:javascript
复制
vehicles.Add(new Car());
vehicles.Add(new Scooter());

并迭代:

代码语言:javascript
复制
        foreach (IVehicle v in vehicles)
            v.TestDrive();

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

v.TestDrive(TestDriveTime);

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35083149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档