tengo unas pocas clases:IList <Type> a IList <BaseType>
class Vehicle
{
}
class Car : Vehicle
{
}
Tengo una lista de la clase derivada: IList<Car> cars;
me gustaría convertir la lista de su clase base, y que tienen intentado: IList<Vehicle> baseList = cars as IList<Vehicle>;
Pero siempre consigo null
. También
cars is IList<Vehicle> evaluates to be false.
Por supuesto, puedo añadir los elementos a una lista si hago lo siguiente:
List<Vehicle> test = new List<Vehicle>();
foreach (Car car in cars)
{
test.Add(car);
}
Y me da mi lista, pero sé que tiene que haber una mejor manera. ¿Alguna idea?
Relacionados con http://stackoverflow.com/questions/981570/c-no-implict-conversion-from-classchild-to-classbase y http://stackoverflow.com/questions/1296892/c-interface-implementation -and-generic-collections-question al menos. –
Robert Harvey: Por supuesto que hay una manera alternativa; podría crear una implementación de IList que básicamente es un contenedor sobre un IList existente . De esta forma, no tendría que lanzar todos los elementos, solo los que se necesitan. –