ドメイン イベント パターンを使用し、IoC コンテナーに依存して、特定の種類のイベントのハンドラーを見つけます。
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>();