在结构图中,我有以下行处理域事件:
public void Dispatch<TEvent>(TEvent eventToDispatch) where TEvent : IDomainEvent
{
foreach (var handler in ObjectFactory.GetAllInstances<IDomainEventHandler<TEvent>>())
{
if (handler.IsActive)
handler.Handle(eventToDispatch);
}
}
我在StructureMap注册表中注册这些:
x.AddAllTypesOf(typeof(IDomainEventHandler<>));
上面的第一个块引发了一个Unknown错误 - Structure Map Code 400.有谁知道如何从strcuture map容器中获取特定类型的泛型类?
TIA
安德鲁
答案 0 :(得分:5)
我要检查的第一件事是以下输出:
Console.WriteLine(ObjectFactory.WhatDoIHave());
确保您的事件处理程序正在按预期注册。
如果按照您的意愿注册了类,那么我认为这就是您要解决IDomainEventHandler的方法:
foreach (var handler in ObjectFactory.ForObject(eventToDispatch)
.GetAllClosedTypesOf(typeof(IDomainEventHandler<>))
.As<IDomainEventHandler<TEvent>>())