Ninject проходной конструктор аргумент typeof класса, который реализует интерфейс
Я пытаюсь использовать Ninject с моей оболочкой для регистрации приложений.
Вот обертка:
public class NLogLogger : ILogger
{
private readonly Logger _logger;
public NLogLogger(Type t)
{
_logger = LogManager.GetLogger(t.Name);
}
}
Как вы видите, я передаю тип в constrctor логгеров, поэтому я бы использовал его следующим образом:
public class EntityObject
{
public ILogger Logger { get; set; }
public EntityObject()
{
Logger = new NLogLogger(typeof(EntityObject));
}
}
Теперь я не могу понять, как сделать что-то подобное с помощью Ninject. Вот мой обязательный модуль:
public class LoggerModule : NinjectModule
{
public override void Load()
{
Bind<ILogger>().To<NLogLogger>();
}
}
Теперь, очевидно, я получаю исключение, потому что он не может внедрить тип в конструктор. Есть идеи, как я могу это сделать?
Ошибка при активации Типа
Соответствующие привязки недоступны, а тип не является самосвязываемым.
Путь активации:
4) Внедрение типа зависимости в параметр t конструктора типа NLogLogger
3) Внедрение зависимости ILogger в регистратор параметров конструктора типа NzbGetSettingsService
2) Инжекция зависимости ISettingsService {NzbGetSettingsDto} в параметр nzbGetService конструктора типа DashboardController
1) Запрос на DashboardController