Ninject passa o tipo de argumento do construtor da classe que implementa a interface
Estou tentando usar o Ninject com o invólucro de log do aplicativo.
Aqui está o invólucro:
public class NLogLogger : ILogger
{
private readonly Logger _logger;
public NLogLogger(Type t)
{
_logger = LogManager.GetLogger(t.Name);
}
}
Como você pode ver, estou passando o tipo para o construtor loggers, então eu o usaria da seguinte maneira:
public class EntityObject
{
public ILogger Logger { get; set; }
public EntityObject()
{
Logger = new NLogLogger(typeof(EntityObject));
}
}
Agora, não consigo descobrir como fazer algo semelhante ao usar o Ninject. Aqui está o meu módulo de ligação:
public class LoggerModule : NinjectModule
{
public override void Load()
{
Bind<ILogger>().To<NLogLogger>();
}
}
Agora, obviamente, recebo uma exceção lançada porque ela não pode injetar o tipo no construtor. Alguma idéia de como posso fazer isso?
Erro ao ativar o Type
Nenhuma ligação correspondente está disponível e o tipo não é auto-vinculável.
Caminho de ativação:
4) Injeção do tipo de dependência no parâmetro t do construtor do tipo NLogLogger
3) Injeção da dependência ILogger no logger de parâmetros do construtor do tipo NzbGetSettingsService
2) Injeção da dependência ISettingsService {NzbGetSettingsDto} no parâmetro nzbGetService do construtor do tipo DashboardController
1) Solicitação de DashboardController