我正在使用 .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)
{
}
...
}
另一个基础服务
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 的一切。你的回答会有很大帮助。