gpt4 book ai didi

asp.net - BaseController 在 MVC 中的用途是什么?

转载 作者:行者123 更新时间:2023-12-05 01:20:43 24 4
gpt4 key购买 nike

我看了更多关于 MVC 的教程。但我不明白,人们使用“BaseController”做什么?在一个项目中,有人用它来进行所有 Controller 之间的通信。在其他项目中有人用于获取日志。你能给我解释清楚吗?

最佳答案

对于一些开发人员来说,创建一个“BaseController”或实际上是一个 BaseAnything 类以用于通用功能,然后从该 BaseWhatever 派生其他东西以重用该功能是一种非常常见的做法。这只是基本的面向对象编程技术,与 MVC 没有任何具体关系(除了我们在本例中专门讨论 BaseController 的事实)。

有一些人,我恰好也在其中,他们认为显式基类通常是一种代码味道,并且经常被严重滥用为“包罗万象”。很多时候,人们为了方便而将各种东西放在这些基类中,因为它比创建一些其他机制更容易以更好的方式共享代码或数据。

除非绝对必要,否则我避免使用基类。我倾向于使用其他方法来实现通常以这种方式实现的功能(我称之为惰性重用)。替代方案的例子是:

  • 扩展方法
  • Html.Action 方法
  • 属性框架,例如 AOP
  • 依赖注入(inject)
  • 还有很多..

你可能出于好意创建了一个基类,并声称它只会用于非常有限的功能......但在你意识到之前,其他在你的项目中开发的人正在往里面塞各种东西那里。

我的规则是,不要这样做。不惜一切代价避免创建基类,除非确实没有其他好的方法。

*注意:我指的是用于共享实现/数据的唯一目的的具体基类。通用和抽象基类有点不同,用于分类法(即 is-a 关系)和分层目的的基类也是如此。一般来说,如果你调用了 FooBase 或 BaseFoo,它可能是这种类型。

此规则也有其他异常(exception)情况,例如当出于测试目的包装不可测试的类时,您通常会为此目的创建一个基类,或者在框架中有时您会故意构建一个旨在被继承的基类,但不是通用的或抽象的。它在那里提供适合框架的功能。但是,这些并不是您在使用这些框架时通常可以控制的事情。

关于asp.net - BaseController 在 MVC 中的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28919647/

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