2009-01-11 48 views
2

控制器获得回报并重新渲染列表有什么不同?我应该将IList还是List返回给MVC中的控制器?

在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(); 
    } 

回答

9

我怀疑有太大的区别的控制器,但你应该尝试揭示你的类的私人数据信息尽可能少。这意味着暴露接口而不是具体类型,并且使用暴露客户端需要对数据进行操作所需的最少量信息的接口。

如果控制器只需要一个IEnumerable<Response>那么你应该考虑使返回类型为GetResponses

+0

他说的 - >总是尝试并返回接口而不是具体类型。为什么?如果您决定更改具体类型(这意味着该接口),则不必更改依赖于该方法的代码(除非您需要新的具体类的新功能)。 – 2009-01-14 00:49:43

1

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

-6

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

+0

我在这里看到很多倒票。也许一个解释是适当的? – 2013-01-14 16:09:20

相关问题