想象一下,我有一个SearchService层,它有一个方法来搜索以某个字符串开头的所有汽车;
public static class Searcher{
public IAnInterface<Car> CarsStartingWith(string startWith){
//magic
}
}
Run Code Online (Sandbox Code Playgroud)
我的服务应该使用什么界面?
IQueryable可以在我的应用程序的其余部分呈现一个漂亮的流畅界面.
IEnumerable有一个懒惰的方面.
IList是最实用的.
我想让我的所有服务返回相同的界面以保持一致性,使整个事情变得更加容易.
ICollection可能也是一个选项,但它只提供这么少......
如果您希望所有服务返回相同的接口,那么我可能会选择IEnumerable<>.
如有必要,您的调用者可以很容易地转换为IQueryable或创建一个List:
IEnumerable<Car> cars = Searcher.CarsStartingWith("L");
var carsList = cars.ToList();
var queryableCars = cars.AsQueryable();
Run Code Online (Sandbox Code Playgroud)