我应该将IList或List返回给MVC中的Controller吗?

时间:2009-01-11 01:02:28

标签: asp.net asp.net-mvc ilist

获取有关呈现List的返回的控制器有什么区别?

在Linq dataContext中:

public IList<Response> GetResponses(int ID)
    {
        var responses = from r in this.Responses where r.ID == ID orderby r.Date select r;

        return responses.ToList();
    }

OR

 public List<Response> GetResponses(int ID)
    {
        var responses = from r in this.Responses where r.ID == ID orderby r.Date select r;

        return responses.ToList();
    }

3 个答案:

答案 0 :(得分:9)

我怀疑控制器存在很大差异,但您应该尝试尽可能少地披露关于类的私有数据的信息。这意味着公开接口而不是具体类型,并使用接口公开客户端对数据进行操作所需的最少量信息。

如果控制器只需要IEnumerable<Response>,那么您应该考虑将返回类型设为GetResponses

答案 1 :(得分:1)

不同之处在于,如果使用IList接口更改List实现,则无需更新控制器。除非你打算让你的图书馆可供他人使用,否则这可能不是什么大不了的事。在这种情况下,抽象可能是合理的,因为如果您进行更改,您将不会是唯一需要更新代码的人。

答案 2 :(得分:-6)

考虑返回一个数组,考虑接受IEnumerable作为参数。