Tôi có một vài lớp:IList <Type> để IList <BaseType>
class Vehicle
{
}
class Car : Vehicle
{
}
Tôi có một danh sách các lớp có nguồn gốc: IList<Car> cars;
Tôi muốn chuyển đổi danh sách để lớp cơ sở của nó, và có đã thử: IList<Vehicle> baseList = cars as IList<Vehicle>;
Nhưng tôi luôn nhận được null
. Cũng
cars is IList<Vehicle> evaluates to be false.
Cấp, tôi có thể thêm các mục vào danh sách nếu tôi làm như sau:
List<Vehicle> test = new List<Vehicle>();
foreach (Car car in cars)
{
test.Add(car);
}
Và tôi nhận được danh sách của tôi, nhưng tôi biết đó có phải là một cách tốt hơn. Bất kỳ suy nghĩ nào?
Liên quan đến http://stackoverflow.com/questions/981570/c-no-implict-conversion-from-classchild-to-classbase và http://stackoverflow.com/questions/1296892/c-interface-implementation -and-generic-collections-question ít nhất. –
Robert Harvey: Tất nhiên có một cách khác; anh ta có thể tạo ra một triển khai thực hiện IList về cơ bản là một trình bao bọc trên một IList hiện có. Bằng cách này, anh ta sẽ không phải đúc tất cả các yếu tố, chỉ những thứ cần thiết. –