ApiController和Controller继承自相同的基类

时间:2014-03-10 22:59:02

标签: asp.net-mvc

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

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

2 个答案:

答案 0 :(得分:3)

组合可能是更好的选择。

基本上,不是继承以获得功能,而是将其粘贴在一个公共类中,可以作为属性包含在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

答案 1 :(得分:0)

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

相关问题