Je charge un module ninject dans mon projet (WCF) et je souhaite connecter log4net dans mon module à l'aide d'un fournisseur personnalisé. La raison pour laquelle j'utilise un fournisseur est que la méthode GetLogger doit passer la classe dans laquelle l'injection a lieu. Si ce n'est pas le moyen de le faire, s'il vous plaît faites le moi savoir, je suis nouveau à Ninject. (Context.getType() n'est pas correct BTW, je vais avoir des ennuis faire.)Exécution de l'injection du constructeur et de l'injection de propriété à l'aide de ninject 2
Le principal problème est que mes variables dans mes cours ilog initialisées après le constructeur a exécuté, mais je veux être capable d'utiliser la journalisation dans mon constructeur. J'utilise aussi Ninject pour appeler mon constructeur et lier ses paramètres à des classes concrètes.
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());
}
}
Toute aide est appréciée.
context.getType() doit être context.Request.Target.Member.ReflectedType btw. – Syg