【发布时间】:2019-01-16 12:18:21
【问题描述】:
我正在使用 .NET Core 依赖注入,但是当我尝试在另一个类中获取服务时,我收到“IServiceProvider.GetService(Type)”不能与类型参数一起使用的错误。
这个错误是什么意思? 我知道泛型类型参数是这样的:GenericInterface,GetService 方法不将 GenericInterface 作为参数。
为什么会出现此错误以及如何解决?
界面
public interface IService
{
void Process();
}
实现接口的类
public class Service : BaseService<IConfig, SomType>
{
public Service(
ILogger logger : base(logger)
{
}
...
}
BaseService 类是一个抽象类,它实现了 IService 接口。
public abstract class BaseService<TConfig, TE> : AnotherBaseService, IService where TConfig : IConfig where TE : struct, IConvertible
{
protected BaseService(ILogger logger): base(logger)
{
}
...
}
AnotherBaseService
public abstract class BaseService
{
protected readonly ILogger Logger;
protected BaseService(ILogger logger)
{
Logger = logger;
}
...
}
我是如何注册它们的。
serviceCollection.AddScoped<IService, Service>();
我如何获得所需的服务。
var incoming = serviceProvider.GetService<IService>();
注意:我刚开始使用依赖注入、.NET Core,还不知道关于 DI 的一切。你的回答会有很大帮助。
【问题讨论】:
标签: c# .net-core console-application dependency-inversion