2011-01-12 22 views
7

En lugar de tener que vincular manualmente todas las clases, ¿qué métodos y patrones, si existen, se recomiendan para configurar los enlaces automáticamente?¿Qué opciones tengo para automatizar enlaces con NInject

Por ejemplo, la gran mayoría de las consolidaciones simplemente tener este aspecto:

Bind<ICustomerRepository>.To<CustomerRepository>(); 

Una vez que los módulos reciben gran tamaño, puede terminar con 100s de enlaces que se verían exactamente lo mismo. ¿Esto puede ser automatizado?

Respuesta

7

verificación de la extensión de las convenciones: https://github.com/ninject/ninject.extensions.conventions

 using (IKernel kernel = new StandardKernel()) 
     { 
      var scanner = new AssemblyScanner(); 
      scanner.From(Assembly.GetExecutingAssembly()); 
      scanner.BindWith<DefaultBindingGenerator>(); 
      kernel.Scan(scanner); 
      var instance = kernel.Get<IDefaultConvention>(); 

      instance.ShouldNotBeNull(); 
      instance.ShouldBeInstanceOf<DefaultConvention>(); 
     } 
+0

Podría explicar un poco más de lo que está haciendo? – Jon

+1

hay un par de BindingGenerators diferentes en este proyecto que escanearán sus ensamblajes y crearán enlaces en Ninject según las convenciones. el DefaultBindingGenerator utilizado en este ejemplo busca interfaces que tengan el mismo nombre que una instancia concreta más "I". por ejemplo, en el IDefaultConvention anterior está obligado a DefaultConvention. también hay un RegexBindingGenerator si desea especificar reglas para los enlaces, y un GenericBindingGenerator para tratar de cumplir automáticamente los argumentos genéricos con los tipos. –

Cuestiones relacionadas