【发布时间】:2021-10-02 13:45:36
【问题描述】:
所以我遇到了一些我不明白的 DI 问题。我看到了一些类似的帖子,我尝试了他们推荐的方法,但我没有任何运气。这是我得到的错误
“无法解析类型 'IRetrieveService' 的服务,而 尝试激活“UpdateService”
这是我的更新服务设置方式
private readonly IAsyncPolicy<SaveDocumentsResult> _processDocumentUpdatesPolicy;
private readonly IRetrieveService _retrieveService;
private readonly ISaveService _saveService;
public UpdateService(
IAsyncPolicy<SaveDocumentsResult> processDocumentUpdatesPolicy,
IRetrieveService retrieveService,
ISaveService saveService)
{
_processDocumentUpdatesPolicy = processDocumentUpdatesPolicy ?? throw new ArgumentNullException(nameof(processDocumentUpdatesPolicy));
_retrieveService = retrieveService ?? throw new ArgumentNullException(nameof(retrieveService));
_saveService = saveService ?? throw new ArgumentNullException(nameof(saveService));
}
最后,我在其中添加了我的服务
Services.AddScoped<IRetrieveService, RetrieveService>();
Services.AddScoped<ISaveService, SaveService>();
【问题讨论】:
-
您能说明一下您是如何在 DI 中注册
UpdateService的吗?你能展示RetrieveService的定义(至少是构造函数),以及它具有的任何依赖项吗?你能发布完整的堆栈跟踪吗? -
这个注册看起来没问题。可能是 RegistrationService 类缺少一些依赖项
-
尝试将服务添加为单例(暂时),看看是否有帮助。也许这会引导您找到更好的解决方案。
-
另外,我知道这似乎很明显,但实际上是在拨打
AddScoped吗? -
你能把IRetrieveService和RetrieveService的相关代码贴出来吗?另外,关于UpdateService Constructor方法,你注册过UpdateService类吗?
标签: c# asp.net-core dependency-injection