Ho due classi che si conoscono in una relazione molti-a-molti. Ora voglio avere due classi aggiuntive che ereditano dalle classi esistenti. L'associazione tra le classi ereditate dovrebbe rimanere.
Esempio:
Supponiamo che tu abbia un Vehicle
public class Vehicle{ }
E hai Tire
s
public class Tire { }
Ora vuoi che Vehicle
abbia molti Tire
s
public class Vehicle
{
public Tire[] Tires { get; set; }
}
È fantastico! Ma un Truck
s Tire
s sono significativamente diversi dagli altri Vehicle
s .. Sono più grandi, hanno picchi (grandi borchie in metallo Ramones!), Sono fatti di polimeri dell'era spaziale (plausibilmente dallo spazio-esterno) e riempito con nuovi gas (non è freddo al neon?).
public class TruckTire : Tire { }
Ma ecco lo sfregamento ... il mio Truck
ora ha solo% normaleTire
s se eredita da Vehicle
...
public class Truck : Vehicle { }
Cruciale del problema & domanda:
Quindi ... Come faccio a fare in modo che quando le persone accedono a Truck.Tires
torni qualcosa che è stato lanciato come TruckTire[]
invece del normale vecchio Tire[]
quando la proprietà Tires
è definita nella base classe con un tipo di Tire[]
non TruckTire[]
? Sì, le istanze in fase di esecuzione potrebbero essere TruckTire
s, ma ciò richiederebbe un cast da utilizzare come tale ...