Tôi đã tạo ra một lớp con của một danh sách chung để tôi có thể thực hiện một giao diện mớisubclassing Danh sách <T> doesnt giữ lại danh sách chức năng
public class CustomersCollection : List<Customer>, IEnumerable<SqlDataRecord>
{
...
}
Khi tôi thay đổi định nghĩa lĩnh vực đến lớp mới (xem ví dụ về già và dòng mới bên dưới) Tôi nhận được tất cả các loại lỗi biên dịch về những thứ sẽ tồn tại trong danh sách gốc.
public CustomersCollection Customers { get; set; }
public void Sample()
{
Console.WriteLine(Customers.Where(x=>x.condition).First().ToString());
}
Tại sao CustomersCollection không kế thừa triển khai giao diện IQueryable, IEnumerable cho Danh sách?
Các lỗi chính thức là:
'CustomersCollection' không chứa một định nghĩa cho 'ở đâu' và không có phương pháp mở rộng 'ở đâu' chấp nhận một đối số đầu tiên loại 'CustomersCollection' có thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội?)
Nó chỉ ra rằng việc thực hiện tùy chỉnh của IEnumerable gây ra tất cả các phương pháp mở rộng áp dụng cho IEnumerable để thất bại. Những gì đang xảy ra ở đây?
Bạn có chắc chắn nó làm cho bất kỳ loại cảm giác ở tất cả để kế thừa từ một lớp mà thực hiện 'IEnumerable' nhưng ghi đè này để thực hiện 'IEnumerable < SqlDataRecord> '? Nó sẽ không được tốt hơn để chỉ cần thêm một phương thức trả về 'IEnumerable ' để tránh những điều phức tạp? –