ASP.NET核心现在是开源的,这真是太棒了,特别是因为文档仍在编写中,但我经常很难找到我想要查看的代码。
例如,我想看看控制器如何实现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
具体实施的代码在哪里?这是一个非常重要的问题:您是如何找到该代码的?
答案 0 :(得分:3)
回答我自己的问题以防其他人帮助。
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存储库确实包含许多项目,但包含HttpResponse
和DefaultHttpResponse
的项目不在其中。
那我怎么找到代码的位置?我在Visual Studio中浏览ASP.NET Core MVC源代码,我最终注意到当我点击F12导航到HttpResponse
类的ControllerBase
代码时,它在顶部显示了以下内容页面Assembly Microsoft.AspNetCore.Http.Abstractions
的浅灰色。
这让我用Google搜索Microsoft.AspNetCore.Http.Abstractions
,确定它位于不同的Git存储库中。一旦我克隆了该存储库,我就可以使用Visual Studio来搜索HttpResponse。然后我右键单击类名去实现。这让我进入DefaultHttpResponse
类,这是HttpResponse
类的具体实现。是啊!
我猜其中一件事就是git存储库的名称以“Abstractions”结尾。最初我认为这样的存储库只包含接口等,但事实证明Microsoft.AspNetCore.Http.Abstractions
存储库包含几个项目,其中一些包含许多与HttpContext
包含的类的实现,包括HttpResponse
,具体实现为DefaultHttpResponse