Ich habe ein paar Klassen:IList <Type> zu IList <BaseType>
class Vehicle
{
}
class Car : Vehicle
{
}
Ich habe eine Liste der abgeleiteten Klasse: IList<Car> cars;
Ich möchte die Liste seiner Basisklasse konvertieren, und haben versucht: IList<Vehicle> baseList = cars as IList<Vehicle>;
Aber ich bekomme immer null
. Auch
cars is IList<Vehicle> evaluates to be false.
Zugegeben, kann ich die Elemente in einer Liste hinzufügen, wenn ich folgendes:
List<Vehicle> test = new List<Vehicle>();
foreach (Car car in cars)
{
test.Add(car);
}
Und ich meine Liste, aber ich weiß, es muss einen besseren Weg sein. Irgendwelche Gedanken?
Bezogen auf http://stackoverflow.com/questions/981570/c-no-implict-conversion-from-classchild-to-classbase und http://stackoverflow.com/questions/1296892/c-interface-implementation -und-generische-Sammlungen-Frage mindestens. –
Robert Harvey: Natürlich gibt es einen alternativen Weg; Er könnte eine Implementierung von IList erstellen, die im Grunde eine Wrapper über eine vorhandene IList ist. Auf diese Weise würde er nicht alle Elemente werfen müssen, nur die, die benötigt werden. –