5
我們正在使用的域事件模式和學習我們的IoC容器上查找特定類型的事件處理程序:如何掃描泛型類型的所有實現與Ninject
public interface IHandleEvent<TEvent> where TEvent : IEvent
{
void Handle(TEvent evnt);
}
隨着StructureMap我們可以掃描並註冊實現上述接口的所有類型,如下所示:
Scan(cfg =>
{
cfg.TheCallingAssembly();
cfg.ConnectImplementationsToTypesClosing(typeof(IHandleEvent<>));
});
是否有與Ninject相當的功能?
目前我在每個處理器單獨綁定像這樣:
kernel.Bind<IHandleEvent<SomeEvent>>().To<EventHandler1>();
kernel.Bind<IHandleEvent<SomeEvent>>().To<EventHandler2>();
kernel.Bind<IHandleEvent<SomeOtherEvent>>().To<EventHandler3>();