2012-12-18 12 views
5

Używamy wzór wydarzeń domen i przechyla się na naszą kontenera IoC zlokalizować teleskopowe dla danego rodzaju imprezy:Jak skanować do wszystkich wdrożeń typu rodzajowego z Ninject

public interface IHandleEvent<TEvent> where TEvent : IEvent 
{ 
    void Handle(TEvent evnt); 
} 

Z StructureMap możemy skanować i zarejestruj wszystkie typy implementujące powyższy interfejs, tak:

Scan(cfg => 
{ 
    cfg.TheCallingAssembly(); 
    cfg.ConnectImplementationsToTypesClosing(typeof(IHandleEvent<>)); 
}); 

Czy istnieje odpowiednik dla Ninject?

Obecnie mam powiązać poszczególne procedury obsługi indywidualnie tak:

kernel.Bind<IHandleEvent<SomeEvent>>().To<EventHandler1>(); 
kernel.Bind<IHandleEvent<SomeEvent>>().To<EventHandler2>(); 
kernel.Bind<IHandleEvent<SomeOtherEvent>>().To<EventHandler3>(); 

Odpowiedz

4

Pakiet Ninject Conventions Extensions zrobił dokładnie to, czego potrzebowałem. Kod działa poniżej:

kernel.Bind(x => x 
    .FromThisAssembly() 
    .SelectAllClasses().InheritedFrom(typeof(IHandleEvent<>)) 
    .BindSingleInterface()); 
Powiązane problemy