如何强制类的子类用字段类型的子项覆盖字段?

时间:2014-03-10 18:35:46

标签: c# oop generics inheritance override

对于令人困惑的标题感到抱歉,我不知道如何用一句话来描述这个问题。我有一个有2个孩子的父类EmergencyWorker:

public abstract class EmergencyWorker
{
    protected virtual Vehicle vehicle;
}

public class EMT : EmergencyWorker
{
    protected override Ambulance vehicle;
}

public class Firefighter : EmergencyWorker
{ 
    protected override FireTruck vehicle;
}

救护车和FireTruck都是车辆。 我想要它,以便属于EMT的每辆车都是救护车,而属于消防员的每辆车都是救火车。

虚拟和覆盖不起作用,因为我得到“修饰符'覆盖'对此项无效” 我对仿制药的经验不多,但我怀疑他们在这里可能会有所帮助。

那么如何强迫EmergencyWorker的孩子用车型的孩子覆盖车辆领域呢?

1 个答案:

答案 0 :(得分:2)

您可以使用泛型类型参数。

public abstract class EmergencyWorker<T> where T : Vehicle
{
    protected T vehicle;
}

public class EMT : EmergencyWorker<Ambulance>
{
}

public class Firefighter : EmergencyWorker<FireTruck>
{ 
}