Je suis en train de mettre en place une hiérarchie d'héritage semblable à ce qui suit:Quelle est la meilleure façon d'hériter un tableau qui doit stocker des données spécifiques à une sous-classe?
abstract class Vehicle
{
public string Name;
public List<Axle> Axles;
}
class Motorcycle : Vehicle
{
}
class Car : Vehicle
{
}
abstract class Axle
{
public int Length;
public void Turn(int numTurns) { ... }
}
class MotorcycleAxle : Axle
{
public bool WheelAttached;
}
class CarAxle : Axle
{
public bool LeftWheelAttached;
public bool RightWheelAttached;
}
Je voudrais seulement stocker des objets MotorcycleAxle dans un array d'objets de moto Essieux et objets CarAxle dans un array d'objets de voiture Axles. Le problème est qu'il n'y a aucun moyen de remplacer le tableau dans la sous-classe pour forcer l'un ou l'autre. Idéalement, quelque chose comme ce qui suit serait valable pour la classe moto:
class Motorcycle : Vehicle
{
public override List<MotorcycleAxle> Axles;
}
mais les types doivent correspondre en cas de dépassement. Comment puis-je soutenir cette architecture? Est-ce que je devrai faire beaucoup de vérification de type et de lancement au moment de l'exécution, où que l'on accède au membre Axles? Je n'aime pas ajouter des vérifications de type au moment de l'exécution, car vous commencez à perdre les avantages de la typage et du polymorphisme. Il doit y avoir au moins quelques vérifications au moment de l'exécution dans ce scénario puisque les propriétés WheelAttached et Left/RightWheelAttached dépendent du type, mais je voudrais les minimiser.