我剛剛下載音樂商店(微軟示例項目)源代碼,基於ASP.NET 5.我不明白爲什麼微軟的開發人員使用IActionResult接口作爲控制器的返回類型。IActionResult誤解
什麼是IActionResult接口使用情況的原因是什麼?爲什麼不只是使用ActionResult類型。
我剛剛下載音樂商店(微軟示例項目)源代碼,基於ASP.NET 5.我不明白爲什麼微軟的開發人員使用IActionResult接口作爲控制器的返回類型。IActionResult誤解
什麼是IActionResult接口使用情況的原因是什麼?爲什麼不只是使用ActionResult類型。
參見此篇約IActionResult
與ActionResult
:http://forums.asp.net/post/5980446.aspx
IActionResult
允許更寬範圍的返回類型的,包括一個實現IActionResult
接口的任何自定義代碼。 ActionResult
僅限於那些擴展ActionResult
抽象類類(你也可以做自定義代碼,但使用的界面允許這樣的事情多繼承,同時擴展一個類沒有)。
雖然這可能回答問題鏈接,但只有答案是不鼓勵的。請至少提供鏈接中信息的摘要。 –
好點,@ScottChamberlain,更新。 –
使用接口作爲參數將允許您使用依賴注入來獲得它的依賴以及那些依賴關係可以用模擬實現來代替在測試時,其實現這些接口。
IActionResult
有更多的返回類型比ActionResult
。例如:如果你想返回HttpNotFound
你必須使用IActionResult返回類型。
有一個在Asp.Net核心沒有這樣的東西'HttpNotFound',有'NotFoundResult'這仍然是繼承形式的ActionResult間接,這意味着你可以使用的ActionResult作爲返回類型。 –
它有什麼問題? –
沒有錯,只是想弄清楚爲什麼他們不使用的ActionResult類型,而不是.. – Vnuuk
但他們爲什麼要這麼做?正如在回答中提到的那樣,返回接口提供了更大的靈活性,並且它是一種常用模式 –