web-dev-qa-db-fra.com

Ninject: Enregistrer une instance déjà créée avec Ninject?

Quelqu'un peut-il me dire si je peux enregistrer une instance déjà créée d'une classe avec Ninject afin qu'il utilise cette instance à chaque fois qu'il a besoin d'une injection?

Je suppose que vous pouvez l'appeler un singleton, mais j'ai déjà créé l'instance. Toute la documentation pointe vers la création de nouvelles instances d'une classe.

49
Martin

Vous pouvez utiliser la méthode ToConstant qui prend une instance déjà existante et l'enregistre comme singleton.

var kernel = new StandardKernel();
kernel.Bind<MyClass>().ToConstant(myClassInstance);

Si vous voulez quelque chose de plus complexe, vous pouvez utiliser le ToMethod (où vous pouvez utiliser un Func pour obtenir votre instance) combiné avec le InSingletonScope

var kernel = new StandardKernel();
kernel.Bind<MyClass>().ToMethod(context => myClassInstance).InSingletonScope();
69
nemesv