2011-01-12 12 views
7

Invece di dover manualmente associare ogni classe, quali metodi e modelli, se ve ne sono, sono consigliati per l'impostazione automatica dei collegamenti?Quali opzioni sono disponibili per automatizzare i collegamenti con NInject

Per esempio, la stragrande maggioranza degli attacchi semplicemente simile a questa:

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

Una volta che i moduli diventano grandi, si può finire con 100s di attacchi che sembrano tutti esattamente lo stesso. Può essere automatizzato?

risposta

7

check-out l'estensione convenzioni: 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

Potrebbe spiegare un po 'di più quello che sta facendo? – Jon

+1

in questo progetto sono presenti un paio di BindingGenerator diversi che analizzeranno gli assiemi e creeranno associazioni in Ninject in base alle convenzioni. il DefaultBindingGenerator utilizzato in questo esempio cerca interfacce con lo stesso nome di un'istanza concreta più "I". ad esempio, nella precedente IDefaultConvention è associato a DefaultConvention. c'è anche un RegexBindingGenerator se si desidera specificare regole per i binding e un GenericBindingGenerator per provare ad adempiere automaticamente argomenti generici ai tipi. –

Problemi correlati