C# 结果误会

C# 结果误会,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我刚刚下载了基于ASP.NET 5的音乐商店(microsoft示例项目)源代码。我不明白为什么微软的开发人员在控制器中使用IActionResult接口作为返回类型 使用IActionResult接口的原因是什么?为什么不使用ActionResult类型 请参阅这篇关于IActionResult与ActionResult的文章: IActionResult允许更广泛的返回类型,包括实现IActionResult接口的任何自定义代码ActionResult仅限于扩展ActionResult抽象类

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

使用IActionResult接口的原因是什么?为什么不使用ActionResult类型


请参阅这篇关于
IActionResult
ActionResult
的文章:


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

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

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

有什么问题吗?没什么问题,只是想弄明白为什么他们不使用ActionResult类型。但是他们为什么要这样做呢?正如前面提到的答案,返回接口提供了更大的灵活性,顺便说一句,这是一种常见的模式,但这可能会回答问题链接,但不鼓励回答。请至少在链接中提供信息摘要。@R.Salisbury我知道这是一篇老文章,但根据您提供的链接,作者给人的印象是,如果您使用接口实现,您只能访问列出的所有结果(
ContentResult
JsonResult
等),
IActionResult
。我不知道自2015年以来是否有任何变化,但目前完全可以使用
ActionResult
访问列出的所有结果。因此,在我看来,使用界面没有任何好处。你能证实还是否认这一点?感谢Asp.Net核心中没有像
HttpNotFound
这样的东西,有
NotFoundResult
仍然间接继承表单ActionResult,这意味着您可以使用ActionResult作为返回类型。