C# IController vs ControllerBase vs Controller vs MyController?
我有一个ASP.NETMVC项目,我一直在构建,当我看到控制器类是如何实现的时候,我正在浏览一些文档。我对OOP非常熟悉,但对于为什么要以这种方式实现它,我有一些疑问 我看了一下,问了一些问题,但找不到和我想问的完全相同的问题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是最小实
提前谢谢 在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返回字符串或JSONController.cs
允许您返回视图
并利用自动绑定。这是开发人员自己的问题,使其更广泛,主要是基于此网站的意见。另请参考@Nkosi我不确定什么是堆栈溢出协议的问题搁置。我已经标记了以下提交作为答案,但我同意,这将是一个很好的问题,为开发商,而这是一个意见的问题。斯蒂芬·穆克:谢谢你提供的资料,我今天会调查一下。谢谢你的回答,这对澄清分歧大有帮助。这个问题现在被搁置,因为也许这是一个意见问题,它为什么会以这种方式实施。不管怎样,我都会记下答案。