【发布时间】:2011-09-08 10:42:35
【问题描述】:
文件 -> 用于生成具有虚拟操作的控制器的 ASP.NET MVC 项目的新项目。我不确定 MVC 2 或 MVC 3 是否已停止,但这不再是最佳实践吗?
【问题讨论】:
-
有趣的问题。我没有注意到变化,但现在你提到它,听起来确实有点熟悉。
标签: asp.net-mvc asp.net-mvc-3 virtual actionresult controller-actions
文件 -> 用于生成具有虚拟操作的控制器的 ASP.NET MVC 项目的新项目。我不确定 MVC 2 或 MVC 3 是否已停止,但这不再是最佳实践吗?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 virtual actionresult controller-actions
由于各种原因,生成的代码可能会被虚拟化。除非某些工具需要,否则将自己的代码虚拟化并不是一个好习惯。参见 Liskov 替换原则和开闭原则。我认为一些框架这样做是为了方便创建代理,但我无法想象有什么理由让你的所有方法都是虚拟的。对我来说,它尖叫着复制/粘贴或货物狂热的程序员。
【讨论】:
T4MVC 确实使动作方法虚拟化。如果你正在使用它,它应该使动作方法虚拟化,没有其他方式可以工作
【讨论】:
如果您将它们设置为虚拟,那么如果您在测试中使用它们,它会使控制器更容易模拟。
【讨论】:
ASP.NET MVC 3 的 current documentation 不显示虚拟方法。我不确定是什么让他们成为virtual 会让你受益,因为我从来没有将控制器子类化来覆盖操作。
【讨论】: