假使我们有这样一个需求,一个MVC网站,已经做好了,但是要求多新增手机端站点。
这样我们就要添加一个控制器,拿注册来说。里面的业务很多都是一样的。不想复制代码的话,怎么办。
想到的就是把它们抽离到一个基类。然后遇到下面几个问题
1.抽离到基类之后,C#是单根继承的,继承了Controller之后就不能再继承基类了。
解决办法:基类继承自Controller然后,然后控制器再继承该基类,就实现了多重继承。
例:创建控制器基类 如BaseController 继承自Controller 然后创建注册控制器 RegisterController:BaseController
2.基类继承自Controller之后,就说明他里面的方法有处理请求的能力了。但是我不希望这个基类可以处理请求。因为处理请求是在它了子类,注册控制器里面。
解决办法:一开始,我想在方法里面动手脚 比如在基类所有的Action方法里加上[NoAction],在子类再改回来可以处理请求,但是现实告诉我我失败了,后来,就只有在类上面动手脚了。要处理请求的话,必须要该类失例化,怎么阻止该类实例化呢。抽象类。对、只要把基类改成抽象类,里面的方法就不会再处理请求了,因为已经无法例实化了。