5

Con NInject (preferiblemente 2.0), ¿qué opciones tenemos para cablear nuestras dependencias de objeto en una aplicación web?Opciones para cablear dependencias con NInject

¿Se pueden definir en un archivo de configuración XML?

¿O tiene que hacerse a través del código?

Respuesta

5

Ninject no tiene la configuración de XML, lo siento, pero no puede proporcionar un enlace directo (cos su sitio tiene elementos flash), pero aquí es una cita de ninject.org:

liberarse de XML

La mayoría de los demás marcos de inyección de dependencia .NET están diseñados en torno al uso de XML para declarar enlaces de tipo. En lugar de obligar a escribir engorrosos y el texto propensos a errores, ninject brazos le con una interfaz fluida, que permite conectar los piezas de su aplicación utilizando código de pleno derecho. Esto significa que puede aprovechar las características del IDE y el compilador, como el código de finalización y type-safety.

+9

Es increíble cómo pueden hacer que un sonido negativo sea un plus. La mayoría de los demás DI \ Ioc le permiten usar Xml o Code. –

+2

Esto no es negativo. El soporte XML cortado a sabiendas, porque es un dolor de mantenimiento. – Restuta

+7

Uso principalmente el código para asignar mis enlaces, pero hay casos en que la configuración funciona. Para la depuración, es posible que desee vincular IMailService a VirtualMailService, pero en el lanzamiento utilice SmtpMailService. Los archivos de configuración se transforman según el entorno de lanzamiento. –

3

¿Qué buscas lograr? ¿Qué tipo de cosas estás buscando configurar? ¿Selección dinámica de una estrategia? Al pasar en números de puerto? Podría ofrecer mucha más información sobre lo que está pensando para obtener una mejor respuesta [que puede aceptar: P].

necesita dividir las preocupaciones de:

  1. conocido cableado objeto (DI)
  2. configuración general - que querrá dividir los en pequeños subconjuntos enfocadas por ejemplo, Inflexible de tipos de elementos de configuración vs tener un fondo global de la configuración en una gran pila mishmashed junto a la appSettings
  3. plugins/desconocida cableado objeto (MEF?)

En la primera piscina, haciendo que en el Código se de la manera correcta y no puedo pensar en ninguna ventaja que daría XML, esp. en el contexto de los nombres fuertes etc.

4

El problema que veo al definir enlaces en el código solamente es que debe agregar una referencia al dll. No puede cambiar el enlace sin agregar una referencia a un dll nuevo (eliminar la referencia al anterior), cambiar el código y volver a compilar.

Si tuviéramos la configuración de xml no necesitaría ninguna referencia, y no tendría que volver a compilar. Ahora tengo la aplicación MVC que usa DI para pasar repositorios a los Controladores. Nada más que el código de Ninject para agregar enlaces utiliza las implementaciones concretas de repositorios. Y aún necesito agregar una referencia a dll que contenga las implementaciones. ¡Por solo una línea de código!

¿O tal vez hay una posibilidad de lograr esto usando Ninject?

+2

que es exactamente por qué no tener archivos de configuración es negativo ... –

Cuestiones relacionadas