Ninject pass constructor argumento typeof class que implementa la interfaz
Estoy intentando usar Ninject con mi contenedor de registro de aplicaciones.
Aquí está el contenedor:
public class NLogLogger : ILogger
{
private readonly Logger _logger;
public NLogLogger(Type t)
{
_logger = LogManager.GetLogger(t.Name);
}
}
Como puede ver, estoy pasando el tipo al constructor de registradores, por lo que lo usaría de la siguiente manera:
public class EntityObject
{
public ILogger Logger { get; set; }
public EntityObject()
{
Logger = new NLogLogger(typeof(EntityObject));
}
}
Ahora parece que no puedo descubrir cómo hacer algo similar con el uso de Ninject. Aquí está mi módulo de enlace:
public class LoggerModule : NinjectModule
{
public override void Load()
{
Bind<ILogger>().To<NLogLogger>();
}
}
Ahora, obviamente, recibo una excepción porque no puede inyectar el tipo en el constructor. ¿Alguna idea de cómo puedo hacer esto?
Error al activar el tipo
No hay enlaces coincidentes disponibles, y el tipo no es autoadhesivo.
Ruta de activación:
4) Inyección de tipo de dependencia en el parámetro t del constructor de tipo NLogLogger
3) Inyección de ILogger de dependencia en el registrador de parámetros del constructor de tipo NzbGetSettingsService
2) Inyección de dependencia ISettingsService {NzbGetSettingsDto} en el parámetro nzbGetService del constructor de tipo DashboardController
1) Solicitud de DashboardController