Должен ли я вернуть 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();
}
ИЛИ ЖЕ
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 ответа
Я сомневаюсь, что контроллер сильно отличается, но вам, вероятно, следует попытаться раскрыть как можно меньше информации о личных данных ваших классов. Это означает предоставление интерфейсов, а не конкретных типов, и использование интерфейса, предоставляющего минимальный объем информации, который потребуется клиенту для обработки данных.
Если контроллеру нужен только IEnumerable<Response>
тогда вы должны рассмотреть вопрос о том, чтобы сделать тип возврата GetResponses
,
Разница в том, что контроллер не нужно будет обновлять, если вы измените реализацию List, если вы используете интерфейс IList. Это, вероятно, не так уж важно, если вы не планируете сделать вашу библиотеку доступной для других. В этом случае абстракция, вероятно, оправдана, так как вы не будете единственными, кто обновит ваш код, если вы внесете изменение.
Подумайте о возврате массива, примите IEnumerable в качестве параметра.