【问题标题】:dependency injection with partial controllers部分控制器的依赖注入
【发布时间】:2021-12-26 16:19:11
【问题描述】:

我有部分控制器 我想为它添加功能 所以我为控制器创建了另一个部分类 首先,我想要特定的服务,所以我将它们注入 ctor 其次,我想要不同的服务,所以我关心新的 ctor 并将服务注入其中 但是第二个 ctor 永远不会被击中,所以 scond 控制器中的服务仍然为空并给我异常object refernce not set to instance 这是我的代码 这是第一个部分

public partial class CommonController : BaseController
    {
       
        private readonly IStoreService _storeService;
 
 public CommonController(IStoreService storeService)
        {
            _storeService = storeService;
        }
} 

这是第二部分

` public partial class CommonController : BaseController
    {
         public CommonController(
            CommonSettings commonSettings,
            ICommonModelFactory commonModelFactory)
       {
        _commonSettings = commonSettings;
            _commonModelFactory = commonModelFactory;
      }
           
    }
    `

【问题讨论】:

  • 这怎么可能编译?你不能从两个不同的基类继承,即使是部分类。
  • 我编辑了他们从同一基础继承的问题,但问题是在这种情况下如何进行依赖注入 @DavidG
  • 控制器需要一个显式注入所有必需服务的构造函数。
  • @AhmedZakaria:请参阅以下帖子:Multiple constructor discovery rules带有不明确的 DI 可解析类型参数的代码会引发异常。不要这样做,它旨在说明“模糊的 DI 可解析类型”的含义。
  • 多个构造函数不运行,它会选择一个并运行(或者可能抛出异常)

标签: c# asp.net .net asp.net-core


【解决方案1】:

你的partial 类应该是这样的:

public partial class CommonController 
{
           
}

你不应该从另一个类继承并且在部分类中没有构造函数

【讨论】:

    最近更新 更多