Répondre à mon propre message après quelques années d'utilisation de NInject.
Voici comment organiser mes NInjectModules, en utilisant un magasin livre comme exemple:
- BookStoreSolution
- Domain.csproj
- Services.csproj
- CustomerServicesInjectionModule.cs
- PaymentProcessingInjectionModule.cs
- DataAccess.csproj
- CustomerDatabaseInjectionModule.cs
- BookDatabaseInjectionModule.cs
- CustomSecurityFramework.csproj
- CustomSecurityFrameworkInjectionModule.cs
- PublicWebsite.csproj
- PublicWebsiteInjectionModule.cs
- Intranet.csproj
- IntranetInjectionModule.cs
Ce que cela dit est que chaque projet dans le système vient préemballé avec un ou plusieurs Des modules NInject qui savent comment configurer les liaisons pour les classes de ce projet.
La plupart du temps, une application individuelle ne veut pas apporter de modifications importantes aux modules d'injection par défaut fournis par un projet. Par exemple, si je crée une petite application WinForm qui doit importer le projet DataAccess, normalement, je souhaite également que toutes les classes du Repository < du projet soient liées à leurs interfaces IRepository < associées.
En même temps, rien n'oblige une application individuelle à utiliser un module d'injection particulier.Une application peut créer son propre module d'injection et ignorer les modules par défaut fournis par un projet qu'elle importe. De cette manière, le système reste flexible et découplé.
Bonne question. J'aimerais voir plus de discussions à ce sujet car je partage vos préoccupations. Avoir un module par sous-système semble raisonnable, mais j'ai aussi des modules pour le câblage des dépendances différemment pour le test unitaire. – JulianM