Chúng tôi đang sử dụng mô hình sự kiện tên miền và dựa vào container IoC của chúng tôi để xác định vị trí xử lý cho một loại đặc biệt của sự kiện:Làm thế nào để quét tất cả các triển khai của một kiểu generic với Ninject
public interface IHandleEvent<TEvent> where TEvent : IEvent
{
void Handle(TEvent evnt);
}
Với StructureMap chúng ta có thể quét và đăng ký tất cả các loại thực hiện giao diện trên như sau:
Scan(cfg =>
{
cfg.TheCallingAssembly();
cfg.ConnectImplementationsToTypesClosing(typeof(IHandleEvent<>));
});
có tương đương với Ninject?
Hiện nay tôi đang gặp phải ràng buộc mỗi xử lý cá nhân như sau:
kernel.Bind<IHandleEvent<SomeEvent>>().To<EventHandler1>();
kernel.Bind<IHandleEvent<SomeEvent>>().To<EventHandler2>();
kernel.Bind<IHandleEvent<SomeOtherEvent>>().To<EventHandler3>();