我正在构建一个与Entity Framework在ASP.NET MVC 5中访问我的数据库的服务。因此,我首先编写了一个带有接口的基础服务。但是我担心一个小事情。
通常我在我的接口中返回一个
所以我想知道在这样的接口中返回什么最好。我可以只返回
以下是我的代码:
通常我在我的接口中返回一个
IEnumerable<T>
,但这经常导致代码中的ToList()
调用。所以我想知道在这样的接口中返回什么最好。我可以只返回
IList
,但我担心它可能太多,而且我不需要IList
提供的所有方法。以下是我的代码:
public interface IBaseService<T>
{
T Add(T obj);
T Update(T obj);
T Remove(string id);
T Get(string id);
ICollection<T> Find(Expression<Func<bool, T>> func);
ICollection<T> GetAll();
}
IEnumerable
;如果想让人们能够添加或删除集合中的项目,则应使用IList
或ICollection
。 - Callum LiningtonIReadOnlyList<T>
可能是什么? - Marc GravellIEnumerable
,因为它可能会导致未计算的查询残留问题,或者调用者几乎总是调用ToList()
或ToArray()
来处理结果。 - Martin Costello