我刚刚下载了基于ASP.NET 5的音乐商店(微软示例项目)源代码。我不明白为什么Microsoft的开发人员使用IActionResult接口作为返回类型控制器。
IActionResult界面使用的原因是什么?为什么不使用ActionResult类型。
答案 0 :(得分:28)
请参阅此帖有关IActionResult
与ActionResult
:http://forums.asp.net/post/5980446.aspx
IActionResult
允许更广泛的返回类型,包括实现IActionResult
接口的任何自定义代码。 ActionResult
仅限于那些扩展ActionResult
抽象类的类(您也可以使用自定义代码,但使用接口允许多重继承,而扩展类不会)。
答案 1 :(得分:1)
使用interfaces作为参数将允许您使用依赖项注入来获取其依赖项,并且在测试实现这些接口的实现时,这些依赖项可以替换为mock实现。
答案 2 :(得分:0)
IActionResult
的返回类型多于ActionResult
。例如:如果要返回HttpNotFound
,则必须使用IActionResult返回类型。