Ho un paio di classi:IList <Type> a IList <BaseType>
class Vehicle
{
}
class Car : Vehicle
{
}
Ho una lista della classe derivata: IList<Car> cars;
Vorrei convertire l'elenco alla sua classe base, e hanno provato: IList<Vehicle> baseList = cars as IList<Vehicle>;
Ma ottengo sempre null
. Anche
cars is IList<Vehicle> evaluates to be false.
Certo, posso aggiungere gli elementi a un elenco se faccio la seguente:
List<Vehicle> test = new List<Vehicle>();
foreach (Car car in cars)
{
test.Add(car);
}
E io ottenere la mia lista, ma so che ci deve essere un modo migliore. Qualche idea?
correlati a http://stackoverflow.com/questions/981570/c-no-implict-conversion-from-classchild-to-classbase e http://stackoverflow.com/questions/1296892/c-interface-implementation -and-generic-collections-question almeno. –
Robert Harvey: Certo che esiste un modo alternativo; potrebbe creare un'implementazione di IList che è fondamentalmente un wrapper su un IList esistente . In questo modo, non avrebbe dovuto gettare tutti gli elementi, solo quelli necessari. –