Я использую инъекцию зависимостей .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>();
NB. Я только начинаю внедрять зависимости, .NET Core и пока не знаю всего о DI. Ваши ответы будут очень полезны.