假使我们有这样一个需求,一个MVC网站,已经做好了,但是要求多新增手机端站点。

这样我们就要添加一个控制器,拿注册来说。里面的业务很多都是一样的。不想复制代码的话,怎么办。

想到的就是把它们抽离到一个基类。然后遇到下面几个问题

1.抽离到基类之后,C#是单根继承的,继承了Controller之后就不能再继承基类了。

解决办法:基类继承自Controller然后,然后控制器再继承该基类,就实现了多重继承。

例:创建控制器基类 如BaseController 继承自Controller   然后创建注册控制器 RegisterController:BaseController

2.基类继承自Controller之后,就说明他里面的方法有处理请求的能力了。但是我不希望这个基类可以处理请求。因为处理请求是在它了子类,注册控制器里面。

解决办法:一开始,我想在方法里面动手脚 比如在基类所有的Action方法里加上[NoAction],在子类再改回来可以处理请求,但是现实告诉我我失败了,后来,就只有在类上面动手脚了。要处理请求的话,必须要该类失例化,怎么阻止该类实例化呢。抽象类。对、只要把基类改成抽象类,里面的方法就不会再处理请求了,因为已经无法例实化了。

相关文章:

  • 2022-12-23
  • 2021-12-02
  • 2022-02-24
  • 2022-02-24
  • 2022-12-23
  • 2021-10-16
  • 2022-01-05
  • 2021-08-15
猜你喜欢
  • 2022-12-23
  • 2022-01-06
  • 2022-01-22
  • 2021-09-17
  • 2022-12-23
  • 2021-09-28
  • 2021-10-29
相关资源
相似解决方案