我正在使用 .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 的一切。您的回答将会有很大的帮助。