2012-01-26 11 views
5

Algunos de los contenedores IOC tienen lo que se llama auto-cableado basado en convenciones, por ejemplo, IProductRepository se asigna a ProductRepository sin ningún cableado manual de su parte.Auto-cableado para Ninject

¿Hay algo con Ninject?

Respuesta

6
// use Ninject.Extensions.Conventions for convention-based binding 
kernel.Scan(scanner => 
    { 
     // look for types in this assembly 
     scanner.FromCallingAssembly(); 

     // make ISomeType bind to SomeType by default (remove the 'I'!) 
     scanner.BindWith<DefaultBindingGenerator>(); 
    }); 

copiado de comentario @Pete Montgomery

7

Ninject viene con una extensión de configuración basada en la convención. Pero aún necesita configurar sus convenions. Ver https://github.com/ninject/ninject.extensions.conventions La sintaxis ha cambiado para 3.0.0 pero se ha vuelto mucho más poderosa. Lo siguiente agregaría enlaces para todas las clases en su sistema. Pero normalmente desea varios de estos convenios para diferentes tipos de clases (por ejemplo, los servicios son únicos, ....)

kernel.Bind(
    x => x.FromThisAssembly() 
      .SelectAllClasses() 
      .BindAllInterfaces()); 
+0

obras, pero la última línea de shoud leer .BindAllInterfaces (3.0.2) por –