.net 来自依赖项注入的服务返回null
在my startup.cs中,我注册了我的服务:.net 来自依赖项注入的服务返回null,.net,.net-core,dependency-injection,.net,.net Core,Dependency Injection,在my startup.cs中,我注册了我的服务: public void ConfigureServices(IServiceCollection services){ ... services.AddSingleton<ICompareService, CompareService>(); services.AddSingleton<IConsumer, Consumer>(); ... } Consumer.cs: pub
public void ConfigureServices(IServiceCollection services){
...
services.AddSingleton<ICompareService, CompareService>();
services.AddSingleton<IConsumer, Consumer>();
...
}
Consumer.cs:
public class Consumer
{
private readonly ICompareService _compareService;
public Consumer(ICompareService compareService) : this()
{
_compareService = compareService;
}
public async Task<string> Foo(string foo){
_compareService.RunCompare()
}
}
公共类消费者
{
专用只读ICompareService\u compareService;
公共消费者(ICompareService compareService):此()
{
_compareService=compareService;
}
公共异步任务Foo(字符串Foo){
_compareService.RunCompare()
}
}
为什么要使用_compareService时它是空的?此设置是否错误?发生这种情况是因为您的DI容器无法将Iconsumer接口与Consumer类关联。使用者类不继承IConsumer接口 工作原理如下:
public class Consumer : IConsumer
{
private readonly ICompareService _compareService;
public Consumer(ICompareService compareService) : this()
{
_compareService = compareService;
}
public async Task<string> Foo(string foo){
_compareService.RunCompare()
}
}
只有这样IConsumer接口才会被解析
我想类似的事情也发生在iCompaReserve身上,但你没有在你的问题中提供足够的信息
但这是非常基本的,我强烈建议您阅读一下依赖性注射是如何工作的目前的问题是不完整的,因此不清楚。如果没有一个能澄清您的具体问题或额外细节来强调所做的工作,就很难重现问题,从而更好地理解实际问题。您能否重新格式化问题,以便我们更清楚地了解当前问题以及您实际在做什么?请参阅页面以获取澄清此问题的帮助。答案已更新!
public class Consumer : IConsumer
{
private readonly ICompareService _compareService;
public Consumer(ICompareService compareService) : this()
{
_compareService = compareService;
}
public async Task<string> Foo(string foo){
_compareService.RunCompare()
}
}
public interface IConsumer {
//functionality to be enforced
}