Pregunta

arquitectura del módulo de ninject parece útil, pero me preocupa que se va a poner en un poco de un desastre.

¿Cómo organizar sus módulos? Cuyo conjunto es lo que los mantiene en y cómo se decide qué ir cableados en el que el módulo?

¿Fue útil?

Solución

Cada subsistema consigue un módulo. Por supuesto, la definición de lo que justifica la clasificación como un 'subsistema' depende ...

En algunos casos, la responsabilidad de algunas fijaciones es empujada hasta un nivel más alto como un subsistema de nivel inferior / componente no está en condiciones de tomar una decisión de autoridad final - en algunos casos, esto se puede lograr mediante el paso de parámetros en el módulo.

Otros consejos

En respuesta a mi propio puesto después de un par de años de usar ninject.

Así es como puedo organizar mis NInjectModules, usando una librería como un ejemplo:

  • 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

Lo que esto quiere decir es que cada proyecto en el sistema viene preenvasado con uno o más módulos ninject que saben cómo configurar los enlaces para las clases de ese proyecto.

La mayoría de las veces una aplicación individual no va a querer hacer cambios significativos en los módulos de inyección por defecto proporcionados por un proyecto. Por ejemplo, si estoy creando una pequeña aplicación WinForm que debe importar el proyecto DataAccess, normalmente estoy también va a querer tener Repository> interfaces.

Al mismo tiempo, no hay nada forzando una aplicación individual a utilizar un módulo de inyección en particular. Una aplicación puede crear su propio módulo de inyección e ignorar los módulos por defecto proporcionados por un proyecto que se está importando. De esta manera el sistema aún sigue siendo flexible y desacoplado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top