Я загружаю недействительный модуль в свой проект (WCF) и хочу подключить log4net в своем модуле с помощью специального провайдера. Причина, по которой я использую провайдера, заключается в том, что метод GetLogger должен пройти класс, в котором выполняется инъекция. Если это не способ сделать это, пожалуйста, дайте мне знать, я новичок в Ninject. (Кстати, Context.getType () не правильно, у меня возникли некоторые проблемы с этим.)
Основная проблема заключается в том, что мои переменные ILog в моих классах инициализируются после выполнения конструктора, но я хочу иметь возможность использовать протоколирование в моем конструкторе. Я также использую Ninject для вызова моего конструктора и привязки его параметров к конкретным классам.
Bind<IBroker>().To<Broker>(); // constructor
Bind<ILog>().ToProvider(new log4netILogProvider()) // property
private class log4netILogProvider : Ninject.Activation.Provider<ILog>
{
protected override ILog CreateInstance(IContext context)
{
return LogManager.GetLogger(context.getType());
}
}
Вся помощь приветствуется.