Ошибка IActionResult
Я только что загрузил исходный код музыкального магазина (microsoft sample projct) на основе ASP.NET 5. Я не понимаю, почему разработчики из Microsoft используют интерфейс IActionResult как возвращаемый тип в контроллерах.
Какова причина использования интерфейса IActionResult? Почему бы просто не использовать тип ActionResult.
![введите описание изображения здесь]()
Ответы
Ответ 1
Смотрите это сообщение о IActionResult
vs. ActionResult
: http://forums.asp.net/post/5980446.aspx
IActionResult
позволяет использовать более широкий диапазон типов возврата, включая любой настраиваемый код, реализующий интерфейс IActionResult
. ActionResult
ограничивается только теми классами, которые расширяют абстрактный класс ActionResult
(который вы также можете делать с пользовательским кодом, но с помощью интерфейса допускает нечто вроде множественного наследования, а расширение класса не выполняется).
Ответ 2
Использование интерфейсов в качестве параметров позволит вам использовать инъекцию зависимостей для получения зависимостей, и эти зависимости могут быть заменены макетными реализациями при тестировании, которые реализуют эти интерфейсы.
Ответ 3
IActionResult
имеет больше типов возврата, чем ActionResult
. Например: если вы хотите вернуть HttpNotFound
, вам нужно использовать тип возврата IActionResult.