2012-01-26 15 views
5

Niektóre z kontenerów IOC mają tak zwane automatyczne okablowanie w oparciu o konwencje, np. Mapy IP Producttepepular do ProductRepository bez ręcznego okablowania na części.Automatyczne okablowanie dla Ninject

Czy jest coś takiego w Ninject?

Odpowiedz

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>(); 
    }); 

skopiowane z @Pete Montgomery komentarzu

7

Ninject pochodzi z rozszerzeniem dla konfiguracji opartej konferencyjnym. Ale nadal musisz skonfigurować swoje konwencje. Zobacz https://github.com/ninject/ninject.extensions.conventions Składnia została zmieniona dla wersji 3.0.0, ale stała się znacznie potężniejsza. Poniższe czynności dodają powiązania dla wszystkich klas w systemie. Ale normalnie chcesz kilka z tych konwencji dla różnych rodzajów klas (np. Usługi są pojedyncze, ...)

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

Działa, ale ostatnia linia powinna być odczytana .BindAllInterfaces() przez 3.0.2 –

Powiązane problemy