У меня есть несколько классов:IList <Type> к IList <BaseType>
class Vehicle
{
}
class Car : Vehicle
{
}
У меня есть список из производного класса: IList<Car> cars;
Я хотел бы, чтобы преобразовать список базового класса, и имеет проверено: IList<Vehicle> baseList = cars as IList<Vehicle>;
Но я всегда получаю null
. Также
cars is IList<Vehicle> evaluates to be false.
Конечно, я могу добавить элементы в список, если я следующее:
List<Vehicle> test = new List<Vehicle>();
foreach (Car car in cars)
{
test.Add(car);
}
И я получу свой список, но я знаю, что должен быть лучший способ. Любые мысли?
Связано с http://stackoverflow.com/questions/981570/c-no-implict-conversion-from-classchild-to-classbase и http://stackoverflow.com/questions/1296892/c-interface-implementation - и-generic-collections - по крайней мере. –
Роберт Харви: Конечно, есть альтернативный путь; он мог бы создать реализацию IList, которая в основном представляет собой оболочку поверх существующего IList . Таким образом, ему не пришлось бы бросать все элементы, только те, которые необходимы. –