Должен ли я вернуть IList или List на контроллер в MVC? - PullRequest
2 голосов
/ 11 января 2009

В чем разница с контроллером, который получает возврат относительно рендеринга списка?

В 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 ]

9 голосов
/ 11 января 2009

Я сомневаюсь, что контроллер сильно отличается, но вам, вероятно, следует попытаться раскрыть как можно меньше информации о личных данных ваших классов. Это означает предоставление интерфейсов, а не конкретных типов, и использование интерфейса, предоставляющего минимальный объем информации, который потребуется клиенту для обработки данных.

Если контроллеру нужен только IEnumerable<Response>, то вам следует рассмотреть возможность сделать тип возврата GetResponses.

1 голос
/ 11 января 2009

Разница в том, что контроллер не нужно будет обновлять, если вы измените реализацию List, если вы используете интерфейс IList. Это, вероятно, не так уж важно, если вы не планируете сделать вашу библиотеку доступной для других. В этом случае абстракция, вероятно, оправдана, так как вы не будете единственными, кто обновит ваш код, если вы внесете изменение.

0 голосов
/ 11 января 2009

Подумайте о возвращении массива, примите IEnumerable в качестве параметра.

...