大牛进!跟技术主管发生分歧了,MVC中的Controller是否可以使用继承来写Action??
本帖最后由 idoiknow 于 2013-02-27 11:33:19 编辑
关于MVC路由的问题。
项目里所有的Controller都是从一个BaseController中派生的。
BaseController里面我加了一个虚方法,是写成Action的,有逻辑实现,目的是实现一个通用的功能,如果某些Controller的这个Action需要特殊处理的,就在具体的Controller里面重写这个虚方法,否则默认调用基类的虚方法的执行逻辑。
但技术主管说这个不行,他没见过这样写的,会有两个路由什么的...balabala
我无法理解他的观点,感觉这样写也没有什么问题,请教各位大牛,这样写会有弊端吗?
贴代码:
(基类)
/// <summary>
/// 所有ReportController都要继承的基类
/// </summary>
public abstract class BaseController
{
[HttpPost]
public virtual JsonResult AddIssueReport(AddIssueReportModel inputModel)
{
//通用实现逻辑
}
}
(具体Controller)
/// <summary>
/// ***报表-控制器
/// </summary>
public class CanvassBusinessReportController : BaseController
{
/// <summary>
/// 重写基类的报表补发方法
/// </summary>
/// <returns></returns>
[HttpPost]
public override JsonResult AddIssueReport(AddIssueReportModel inputModel)
{
//特殊实现逻辑
}
}
------解决方案--------------------只要可用可读可维护, 没什么不行的
------解决方案--------------------假如你是对的,胳膊拧不过大腿
假如你是错的,你们老大可能真是站的高,看的远
我分不出对错。只能与楼主共勉。
期待自己看清的那天
------解决方案--------------------可扩展,可维护,有什么不好的?
某些人总是将自己不熟悉的归于非安全的。
------解决方案--------------------人家不是在征求意见。
你在行使人家的职权,你要人家作什么,你要作什么?
写个大致能通用的基类,特殊的自己另外实现。
让程序的特殊性零星分散到各个地方?我看不是好主意。
------解决方案--------------------从名字来看并不是所有继承类都需要,为什么不再设计一个基类使得功能进一步具体化(需要这个Action的子类派生于此)