Utiliser Ninject avec un service Windows

Avez-vous de bons exemples d’utilisation de Ninject avec un service Windows? Je ne sais pas si des extensions sont nécessaires. Aussi, pas sûr de ce que la racine de la composition devrait être? Avez-vous de bons exemples d’utilisation de Ninject avec un service Windows?

Un service Windows ne diffère pas beaucoup d’une application de ligne de commande classique en ce qui concerne l’dependency injection. La racine de composition directe est votre méthode Main .

La façon dont je l’ai habituellement fait est de créer le StandardKernel avec un module dans lequel mes dépendances sont résolues. Ensuite, utilisez kernel.Get pour résoudre les dépendances de niveau supérieur – tout le rest suivra à partir de là:

 static void Main(ssortingng[] args) { var kernel = new StandardKernel(new FooModule()); var barDependency = kernel.Get(); System.ServiceProcess.ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new FooService(barDependency) }; System.ServiceProcess.ServiceBase.Run(ServicesToRun); } 

Utilisation de Ninject avec TopShelf .. run vs install (démarrage) J’ai rencontré un problème étrange dans lequel > MyService.exe run fonctionne > MyService.exe run avec le code Kernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }

Mais quand je lance le service après l’installation à l’aide de > MyService.exe install

il n’a pas pu résoudre les liaisons mentionnées dans l’parsing de l’assemblage Ninject.

Après quelques heures à me casser la tête …

changer le .From(...) en .FromAssembliesMatching(...) je pourrais démarrer le service avec succès.

J’espère que ça aide quelqu’un.