IActionResult误解

时间:2015-11-04 19:38:06

标签: c# asp.net-mvc asp.net-core

我刚刚下载了基于ASP.NET 5的音乐商店(微软示例项目)源代码。我不明白为什么Microsoft的开发人员使用IActionResult接口作为返回类型控制器。

IActionResult界面使用的原因是什么?为什么不使用ActionResult类型。

enter image description here

3 个答案:

答案 0 :(得分:28)

请参阅此帖有关IActionResultActionResulthttp://forums.asp.net/post/5980446.aspx

的内容

IActionResult允许更广泛的返回类型,包括实现IActionResult接口的任何自定义代码。 ActionResult仅限于那些扩展ActionResult抽象类的类(您也可以使用自定义代码,但使用接口允许多重继承,而扩展类不会)。

答案 1 :(得分:1)

使用interfaces作为参数将允许您使用依赖项注入来获取其依赖项,并且在测试实现这些接口的实现时,这些依赖项可以替换为mock实现。

答案 2 :(得分:0)

IActionResult的返回类型多于ActionResult。例如:如果要返回HttpNotFound,则必须使用IActionResult返回类型。