Lo primero que debe asegurarse de estar haciendo es ejecutar su código de enlace dentro de un módulo de Ninject dentro del método Load, que anula.
Por ejemplo:
public class ApplicationModule : NinjectModule {
public override void Load() {
Bind<IWeapon>().To<Sword>();
// additional bindings continue ...
}
}
La clase NinjectModule hereda clases e interfaces que definen la sintaxis de unión fluidez Ninject haciendo así que el método Bind<T>()
disponibles dentro del alcance de la clase. Estos módulos se hacen pasar entonces al núcleo Ninject cuando se crea una instancia del kernel:
var kernel = new StandardKernel(new ApplicationModule());
El método de cada módulo pasa al kernel Load()
entonces serán llamados y las definiciones vinculantes contenidas dentro de los métodos ejecutados.
El ejemplo anterior especifica NinjectModule como la clase base; sin embargo, esto es específico para la versión 2.0 de Ninject. Si está utilizando Ninject 1.x, su clase base será StandardModule
. En cualquier caso, el método de carga se anula y las declaraciones vinculantes (que son similares en ambas versiones) se emiten allí.
Para responder a su pregunta más:
Para Ninject 1.x, el archivo DLL requerido es ninject.core.dll y el espacio de nombres que se define en StandardModule es Ninject.Core.
Para Ninhect 2.0, la DLL requerida es ninject.dll y el espacio de nombres en el que se define NinjectModule es Ninject.Modules.
En ambos casos, puede ser necesario hacer referencia a los espacios de nombres más, dependiendo de la complejidad de sus declaraciones vinculantes consiguen - es decir, si utiliza fijaciones contextuales o alcance sus fijaciones, etc. En el caso de Ninject 1.x, también puede necesitar hacer referencia a Ninject.Conditions.dll para estos casos más complejos.
No necesita hacer referencia a Castle.Core a menos que esté utilizando la función de interceptación de Ninject, que es una función principal 1.x pero una extensión en la versión 2.0.
Espero que esto ayude.
Gracias. Solo puedo mostrarte una vez y seleccionar esto como la respuesta correcta. Desearía poder hacer más. Luché toda la tarde. Hay documentación sobre cómo todo se junta, pero tuve problemas para encontrar algo para mi situación. Otros tutoriales sobre cómo empezar todo parecían faltar cuando fui al resultado de la búsqueda. – uriDium
¡Oye, no hay problema! Utilizo bastante Ninject y luché durante mucho tiempo cuando comparaba todos los contenedores de IoC. Me alegro de poder ayudar. –