gpt4 book ai didi

asp.net-core-mvc - 为什么GitHub上的Controller继承自ControllerBase,而VS中却没有?

转载 作者:行者123 更新时间:2023-12-02 07:53:18 24 4
gpt4 key购买 nike

在 Visual Studio 中的 Controller 上按 F12(转到定义)时,它会显示抽象基类。

public abstract class Controller : IActionFilter, IFilterMetadata, IAsyncActionFilter, IDisposable

但是当查找时Controller.cs on GitHub 。它表明它继承自 ControllerBase .

public abstract class Controller : ControllerBase, IActionFilter, IAsyncActionFilter, IDisposable

这是为什么?

我很困惑。另外,由于 HomeController 继承自 Controller,当 C# 不支持多重继承时,Controller 如何继承 ControllerBase 呢?

最佳答案

两者来自不同的时间点。例如,您在 GitHub 上链接到的文件是该文件的当前版本,请注意,它来自 Dev 分支。

dev branch

而且您很可能没有运行当前开发分支中的代码。

如果您单击 GitHub 上链接到的文件的历史记录按钮,您将看到该文件的修订历史记录。

Revision history

我通过单击每个修订版本的 <> 按钮检查了该文件的各个版本,但与您正在运行的代码版本不匹配。我看到该文件的修订历史记录只能追溯到 2016 年 1 月 22 日。因此,在此之前, Controller 代码必须已在不同的文件中定义,或者由于某些其他原因,修订历史记录丢失了(可能是当他们从 MVC 重命名它时) 6 到 Core MVC 1.0)。

您很可能正在运行 RC1 中的代码。 GitHub 上的 Controller.cs 版本更符合您所看到的内容:https://github.com/aspnet/Mvc/blob/6.0.0-rc1/src/Microsoft.AspNet.Mvc.ViewFeatures/Controller.cs如果它是正确版本的代码,它应该完美匹配,但我发现它仍然略有不同。它匹配的意义在于它不继承自 ControllerBase

rc1 version of the code

还有关于多重继承。当 HomeController 继承自 Controller 且 Controller 继承自 ControllerBase 时,这不是多重继承。如果有一个 ControllerBase,假设有一个 SomethingElse 类,并且 Controller 定义中从这两个类继承,那么就会出现多重继承。你说得对,C# 不支持这一点。

关于asp.net-core-mvc - 为什么GitHub上的Controller继承自ControllerBase,而VS中却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com