cho Danh sách một cách rõ ràng có nó nên tin tùy thuộc vào những gì các chức năng bạn đang phơi bày là nghĩa vụ phải làm, giao diện như IEnuemerable, ICollection hoặc IList sẽ là một lựa chọn tốt hơn hoặc nếu bạn đang phơi bày một bộ sưu tập Xem SLaks trả lời .
Nói chung hiển thị cấu trúc bên trong và trạng thái là một ý tưởng tồi và vì đối tượng của bạn trong Danh sách loại là cả hai, bạn sẽ muốn giữ nội bộ. Nó có thể có ý nghĩa để cung cấp cho người dùng khả năng lặp qua nó, để thêm hoặc xóa các mục vào nó, nhưng bạn vẫn nên giữ Danh sách bên trong và hiển thị các phương thức Thêm/Loại bỏ hoặc làm tối thiểu giao diện làm cho nó có thể thay đổi loại biểu diễn bên trong có ảnh hưởng đến giao diện công khai.
Hơn nữa nếu bạn đang phơi bày bằng giao diện, bạn nên đi đến giao diện hẹp nhất có thể.
Vì vậy, nếu mã máy khách chỉ cần liệt kê nó. sử dụng IEnumerable nếu mã máy khách cần sử dụng chỉ mục ICollection và vv.
hơn nữa nếu bạn phơi bày như một IEnumerable bạn nên chắc chắn rằng những gì bao giờ bạn quay được trên thực tế chỉ đọc bằng một trong hai cách sử dụng một chỉ lớp tập đọc hoặc bằng cách sử dụng một khối iterator
EDIT sau khi cập nhật Liên quan đến ví dụ của bạn. Hãy tự hỏi mình có ý nghĩa rằng bất kỳ ai ngoại trừ nhà tuyển dụng có thể thay đổi nhân viên của mình là ai không? với tôi đó là những từ bạn đã chọn. Người sử dụng lao động sử dụng nhân viên và phải có toàn quyền kiểm soát đối với nhân viên của họ.Vì vậy, trong trường hợp cụ thể này, tôi sẽ giữ nó riêng tư và cho thuê (nhân viên IEmployee) và Fire (nhân viên IEmployee) theo cách mã rõ ràng ý định
Nguồn
2010-10-05 12:00:55
Bạn có thể muốn mở rộng một chút về bối cảnh đó là một câu hỏi rất rộng với việc thông tin bối cảnh rất ít khó khăn để cung cấp cho bạn một câu trả lời chính xác –
Tại sao DoNotExposeGenericLists [FxCop Rule] khuyên tôi tiếp xúc với Bộ sưu tập thay vì Danh sách ? http://blogs.msdn.com/b/codeanalysis/archive/2006/04/27/585476.aspx –