【发布时间】: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