首页 文章

ApiController和Controll继承自相同的基类

提问于
浏览
3

我的项目中有多个控制器和apicontrollers .

如何使两种类型的控制器继承一个基类,因为我需要两种方法?

2 回答

  • 0

    组合可能是更好的选择 .

    基本上不是继承以获得功能,而是将其粘贴在一个公共类中,它可以作为属性包含在Api和标准控制器中 .

    然后,您可以将依赖性注入两者 .

    例如:

    public class CommonControllerLogic : ICommonControllerLogic 
    {
      public ActionResult SomeSortOfMethod() 
      {
         // etc..
      }
    }
    
    public class MobileApiController: ApiController 
    {
      public ICommonControllerLogic CommonControllerLogic  {get;set;}
    
      // etc..
    }
    
    public class HomeController: Controller 
    {
      public ICommonControllerLogic CommonControllerLogic  {get;set;}
    
      // etc..
    }
    

    作文通常是favoured over inheritence,上面有大量的文章,只需做一个快速的谷歌搜索,阅读this article .

  • 3

    MVC控制器继承自 Controller ,而API控制器继承自 ApiController . C#不容易支持多重继承 . 我建议将共享逻辑移动到一个可以调用的静态类中 . 否则,您可以提供有关共享内容的更多详细信息;在某些情况下,其他设计模式可能更合适 .

相关问题