передать ILogger в качестве аргумента конструктора классу в проекте библиотеки классов, на который имеется ссылка

У меня есть проект библиотеки классов, на который я ссылаюсь из основного консольного приложения (я использую класс 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));

Но я должен передать инициализированный регистратор, и это неверно. Как выполнить мои требования?


person ATT    schedule 03.10.2019    source источник
comment
Я считаю, что вы можете добиться того, чего хотите, используя services.AddSingleton<IProcessService>(x => new ProcessService(refreshInterval*1000, x.GetRequiredService<ILogger>()));. В противном случае сообщите мне, и я удалю свой голос, чтобы закрыть его как дубликат.   -  person smoksnes    schedule 03.10.2019
comment
Да, это сработало. Спасибо. @smoksnes   -  person ATT    schedule 03.10.2019
comment
отметьте как повторяющийся, если вы считаете, что решение, данное в другом ответе, эффективно ответило на ваш вопрос.   -  person smoksnes    schedule 03.10.2019