C# IController vs ControllerBase vs Controller vs MyController?

C# IController vs ControllerBase vs Controller vs MyController?,c#,asp.net-mvc,oop,C#,Asp.net Mvc,Oop,我有一个ASP.NETMVC项目,我一直在构建,当我看到控制器类是如何实现的时候,我正在浏览一些文档。我对OOP非常熟悉,但对于为什么要以这种方式实现它,我有一些疑问 我看了一下,问了一些问题,但找不到和我想问的完全相同的问题 在MVC5中,这个链的目的是什么:IController->ControllerBase->Controller->MyController 如果ControllerBase应该是生成控制器所需的最小值,那么为什么要有控制器类呢?反之亦然,如果Controller是最小实

我有一个ASP.NETMVC项目,我一直在构建,当我看到控制器类是如何实现的时候,我正在浏览一些文档。我对OOP非常熟悉,但对于为什么要以这种方式实现它,我有一些疑问

我看了一下,问了一些问题,但找不到和我想问的完全相同的问题

  • 在MVC5中,这个链的目的是什么:IController->ControllerBase->Controller->MyController
  • 如果ControllerBase应该是生成控制器所需的最小值,那么为什么要有控制器类呢?反之亦然,如果Controller是最小实现,那么ControllerBase不是真正的基类

  • 提前谢谢

    在MVC 5中,
    ControllerBase
    只起到基类的作用,主要用于内部使用,并在内部实现了
    IController.Execute(RequestContext-RequestContext)
    ,下面是我从Resharper获得的用法列表

    然后,
    控制器
    实现过滤器、模型和视图绑定的所有功能。因此,要实现您的
    MyController
    ,您需要从
    Controller

    您的SO已经解释了
    ControllerBase
    Controller
    的用途

    当ASP.NET团队将MVC、WebAPI聚合到一个框架中时,MVC6(后来称为ASP.NET MVC Core)中的事情看起来更有趣

    请查看GitHub for ASP.NET Core 1.1.1中Controller和ControllerBase类的源代码。在每个类的
    标记中,他们说:

    具有视图支持的MVC控制器的基类

    不支持视图的MVC控制器的基类


    您可以询问何时使用ControllerBase。我的直觉告诉我,如果我只使用ASP.NET MVC for WebAPI,而不需要
    查看
    功能,您可以直接从
    控制器库
    派生出
    MyController
    。大多数情况下,您可以从
    Controller
    派生,即使您不使用
    View
    ,只为WebAPI返回字符串或JSON
    Controller.cs
    允许您返回
    视图
    并利用自动绑定。

    这是开发人员自己的问题,使其更广泛,主要是基于此网站的意见。另请参考@Nkosi我不确定什么是堆栈溢出协议的问题搁置。我已经标记了以下提交作为答案,但我同意,这将是一个很好的问题,为开发商,而这是一个意见的问题。斯蒂芬·穆克:谢谢你提供的资料,我今天会调查一下。谢谢你的回答,这对澄清分歧大有帮助。这个问题现在被搁置,因为也许这是一个意见问题,它为什么会以这种方式实施。不管怎样,我都会记下答案。