У меня есть проект библиотеки классов, на который я ссылаюсь из основного консольного приложения (я использую класс ProcessService
). Если бы конструктор принимал в качестве аргумента только ILogger:
public ProcessService(ILogger factory)
{
}
А потом регистрирую в ConfigureServices(IServiceCollection services)
Вот так:
services.AddSingleton<IProcessService, ProcessService>();
Работает нормально. Проблема в том, что мне нужно передать другой аргумент, а не ILogger, который я беру из настроек приложения, поэтому конструктор класса выглядит так:
public ProcessService(int period,ILogger factory){}
А потом пытаюсь зарегистрировать вот так:
services.AddSingleton<IProcessService>(new ProcessService(refreshInterval*1000,ILogger logger));
Но я должен передать инициализированный регистратор, и это неверно. Как выполнить мои требования?
services.AddSingleton<IProcessService>(x => new ProcessService(refreshInterval*1000, x.GetRequiredService<ILogger>()));
. В противном случае сообщите мне, и я удалю свой голос, чтобы закрыть его как дубликат. - person smoksnes   schedule 03.10.2019