Giả sử bạn có các lớp sau:Đi qua một bộ sưu tập giao diện
class Car : IPainting
{
...
}
Sau đó, một chức năng như thế này:
void AddCars(IEnumerable<Car> collection)
Sau đó, một đoạn mã như thế này:
Car bmw = new Car();
Car mercedes = new Car();
IPainting a = (IPainting) bmw;
IPainting b = (IPainting) mercedes;
IPainting[] paintings = new IPainting[] {a, b};
AddCars(paintings); // fails to compile
này khóa học không biên dịch vì phương thức AddCars() chỉ chấp nhận một bộ sưu tập Ô tô nhưng đó là những gì mà mảng 'tranh' được tạo ra.
Tôi biết rằng C# 4.0 có thể sẽ cung cấp giải pháp cho việc này. Hôm nay có cách giải quyết nào không?
Cảm ơn,
Alberto
C# 4.0 sẽ không cung cấp một giải pháp cho mã mà bạn có ở đây.Bạn sẽ không bao giờ có thể vượt qua một cái gì đó một loại đó là cao hơn trong hie thừa kế rarchy để một phương pháp mong đợi một cái gì đó thấp hơn. Như những người khác đã chỉ ra, phương pháp của bạn sẽ cần phải thực hiện trong IPainting - không xe cho điều này để làm việc. –