系统首选哪种收集界面?系统我的意思是存储库,服务等.所以我需要选择IEnumerable,ICollection,IList或甚至可能是List.
我想从理论上讲,使用IEnumerable会更好.但它使用起来不太方便:例如,我必须使用GetElementAt方法而不是索引器.
我目前的选择是IList,但我怀疑这个决定.
如果要允许索引器访问,则应使用IList<T>.一般规则是使用仍然满足所有使用要求的最不具体的类型.在你的情况下,这听起来像一个列表.(当然,IList<T>不是特定的List<T>)
这实际上取决于您希望为您的存储库,服务等的消费者提供哪种类型的访问权限.
如果您只打算让消费者阅读该集合,请使用IEnumerable<T>(没有可用的写入类型方法).
如果您希望消费者直接添加到集合中,那么方法ICollection<T>将为他们提供.
一般来说,我尝试尽可能多地公开集合IEnumerable<T>.当用户想要向集合添加内容时,他们必须调用单独的方法而不是直接写入集合本身.它使您有机会验证输入,执行其他检查等.