ASP.NET Core 现在是开源的真是太棒了,尤其是因为文档仍在编写中,但我经常很难找到要查看的代码。

例如,我想看看 Controller 如何实现 Response.Redirect 但代码在哪里?

我能够在 GitHub 上找到 ControllerBase 的 RC2 版本代码:https://github.com/aspnet/Mvc/blob/1.0.0-rc2/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs

通过克隆 github.com/aspnet/Mvc 资源库,我能够使用 VS2015 了解到 HttpResponse 使用的 ControllerBase 类是一个 abstract 类。但我现在处于死胡同。
HttpResponse 使用的 ControllerBase 的具体实现代码在哪里?这是一个真正的大问题:您是如何找到该代码的?

最佳答案

回答我自己的问题,以防它对其他人有帮助。

HttpResponse 类的源代码可以在这里找到:https://github.com/aspnet/HttpAbstractions/blob/1.0.0-rc2/src/Microsoft.AspNetCore.Http.Abstractions/HttpResponse.cs 但它是一个抽象类而不是一个具体的类。事实证明,具体的实现是一个名为 DefaultHttpResponse 的类,该类的代码位于:https://github.com/aspnet/HttpAbstractions/blob/1.0.0-rc2/src/Microsoft.AspNetCore.Http/Internal/DefaultHttpResponse.cs

很难找到此源代码的原因之一是它是未包含在 GitHub 上的 ASP.NET Core MVC 存储库中的项目的一部分。虽然 MVC 存储库确实包含很多项目,但包含 HttpResponseDefaultHttpResponse 的项目不在其中。

那么我是如何找到代码的位置的呢?我正在 Visual Studio 中浏览 ASP.NET Core MVC 源代码,我最终注意到,当我按 F12 以从 HttpResponse 类导航到 ControllerBase 的代码时,它在页面顶部以浅灰色指示 Assembly Microsoft.AspNetCore.Http.Abstractions 的以下内容。

这让我在谷歌上搜索 Microsoft.AspNetCore.Http.Abstractions,果然它位于不同的 Git 存储库中。克隆该存储库后,我可以使用 Visual Studio 搜索 HttpResponse。然后我右击类名去实现。这把我带到了 DefaultHttpResponse 类,它是 HttpResponse 类的具体实现。是的!

我想让我感到困扰的一件事是 git 存储库的名称以“Abstractions”结尾。最初我认为这样的存储库只包含接口(interface)等,但事实证明 Microsoft.AspNetCore.Http.Abstractions 存储库包含多个项目,其中一些包含许多与 HttpContext 相关的类的实现,其中包含 HttpResponse 并且它是 DefaultHttpResponse 的具体实现

c# - Asp.Net Core ControllerBase.Response,源代码在哪里?-LMLPHP

关于c# - Asp.Net Core ControllerBase.Response,源代码在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37684182/

10-13 02:49