Рассмотрим следующее:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton<ILogger, Logger>();
...
}
Так что я, очевидно, хочу, чтобы класс ведения журнала в моих методах контроллера, как показано, но у меня также есть много других компонентов, которые будут для них общими - и все эти компоненты захотят иметь ссылки на мои регистратор. В конце концов, это синглтон (который, я думаю, может быть анти-паттерном, но в любом случае).
Как правильно передавать «зависимости внутри зависимостей» в методе ConfigureServices? Я мог бы сделать что-то вроде этого, я думаю:
public void ConfigureServices(IServiceCollection services)
{
Logger l = new Logger();
services.AddSingleton<ILogger, Logger>((provider) =>
{
return l;
});
services.AddScoped<IFoo, Foo>((provider) =>
{
return new Foo(l);
});
...
}
Я мог бы сделать что-то подобное! Но это выглядит и похоже на взломать. Я уверен, что не должен разрешать / создавать реальные конкретные конструкции в моем методе ConfigureServices, как это, но я не знаю, как сказать моему конструктору Foo (как и методы моего контроллера) зависеть от ILogger.
Каков предполагаемый механизм для этого - или я должен придерживаться совершенно другой схемы?