Tôi nghĩ bạn có thể sử dụng một trong hai, nhưng mỗi cái có một cách sử dụng. Về cơ bản List
là IEnumerable
nhưng bạn có chức năng đếm, thêm phần tử, xóa phần tử
IEnumerable không hiệu quả để đếm các phần tử
Nếu bộ sưu tập được dự định là chỉ đọc, hoặc việc sửa đổi bộ sưu tập được kiểm soát bởi việc Parent
trả lại IList
chỉ cho Count
không phải là một ý kiến hay.
Trong Linq, có một Count()
phương thức mở rộng IEnumerable<T>
mà bên trong CLR sẽ tắt đến .Count
nếu loại cơ bản là của IList
, do đó sự khác biệt về hiệu suất là không đáng kể.
Nói chung, tôi cảm thấy (ý kiến) tốt hơn nên trả lại IEnumerable nếu có thể, nếu bạn cần bổ sung thì hãy thêm các phương thức này vào lớp cha, nếu không, người tiêu dùng sau đó đang quản lý bộ sưu tập trong Model vi phạm các nguyên tắc, ví dụ: manufacturer.Models.Add(model)
vi phạm luật đồng hồ đo. Tất nhiên đây chỉ là những hướng dẫn chứ không phải là những quy tắc khó và nhanh, nhưng cho đến khi bạn nắm được đầy đủ khả năng áp dụng, hãy làm theo một cách mù quáng còn hơn là không tuân theo chút nào.
public interface IManufacturer
{
IEnumerable<Model> Models {get;}
void AddModel(Model model);
}
(Lưu ý: Nếu sử dụng nNHibernate, bạn có thể cần ánh xạ tới IList riêng bằng các trình truy cập khác nhau.)