C# 如何使用结构映射获取泛型类的所有实例
在Structure map中,我使用以下行处理域事件:C# 如何使用结构映射获取泛型类的所有实例,c#,.net,structuremap,C#,.net,Structuremap,在Structure map中,我使用以下行处理域事件: public void Dispatch<TEvent>(TEvent eventToDispatch) where TEvent : IDomainEvent { foreach (var handler in ObjectFactory.GetAllInstances<IDomainEventHandler<TEvent>>()) {
public void Dispatch<TEvent>(TEvent eventToDispatch) where TEvent : IDomainEvent
{
foreach (var handler in ObjectFactory.GetAllInstances<IDomainEventHandler<TEvent>>())
{
if (handler.IsActive)
handler.Handle(eventToDispatch);
}
}
public void Dispatch(TEvent eventToDispatch),其中TEvent:IDomainEvent
{
foreach(ObjectFactory.GetAllInstances()中的变量处理程序)
{
if(handler.IsActive)
handler.Handle(eventToDispatch);
}
}
我正在StructureMap注册表中注册这些内容,如下所示:
x.AddAllTypesOf(typeof(IDomainEventHandler<>));
x.AddAllTypesOf(typeof(IDomainEventHandler));
上面的第一个块抛出未知错误-结构映射代码400。有人知道如何从structure映射容器中获取特定类型的泛型类吗
短暂性脑缺血发作
Andrew我要检查的第一件事是以下输出:
Console.WriteLine(ObjectFactory.WhatDoIHave());
确保事件处理程序按照预期的方式注册
如果类按预期注册,那么我认为这就是您希望解决IDomainEventHandler问题的方式:
foreach (var handler in ObjectFactory.ForObject(eventToDispatch)
.GetAllClosedTypesOf(typeof(IDomainEventHandler<>))
.As<IDomainEventHandler<TEvent>>())
foreach(ObjectFactory.ForObject(eventToDispatch)中的变量处理程序)
.GetAllClosedTypesOf(typeof(IDomainEventHandler))
.As())
谢谢,WhatDoIHave()方法使我发现问题在于我提出的域事件缺少域事件处理程序。再次干杯