У меня такая ситуация:
public class MyController : Controller, ILoggable
{
private readonly ILogger<ILoggable> _logger;
public MyController(ILogger<ILoggable> logger)
{
this._logger = logger;
}
...
}
Я хочу разрешить ILogger<ILoggable>
как синглтон и ILoggable
как переходный процесс. В моем стартапе я попытался с этим:
services.AddSingleton(typeof(ILogger<>), typeof(LoggerImpl<>));
Но я не могу разрешить ILoggable
, потому что это контроллер, и я не понимаю, какой подход лучше.
EDIT Вот проблема: я не могу объявить ILogger<MyController>
внутри моего контроллера, потому что ILogger<ILoggable>
используется в коде третьей части. Я пытаюсь лучше объяснить мою проблему без использования зависимости зависимостей.
У меня есть третий класс, в котором есть конструктор, подобный этому>
Public ExternalClass(ILogger<ILoggable> logger) {…}
Теперь в моем контроллере мне нужно использовать это внешний класс, но, очевидно, я не могу сделать что-то вроде этого:
public class MyController : Controller, ILoggable
{
private readonly ILogger<MyController> _logger;
public MyController(ILogger<MyController> logger)
{
this._logger = logger;
ExternalClass c = new ExternalClass(logger); //Here the error because logger is of type ILogger<MyController>, not ILogger<ILoggable>
}
...
}
Мне нужно решить это через DI.
Может кто-нибудь помочь мне, пожалуйста? Спасибо