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 ...