Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用结构映射获取泛型类的所有实例_C#_.net_Structuremap - Fatal编程技术网

C# 如何使用结构映射获取泛型类的所有实例

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>>()) {

在Structure map中,我使用以下行处理域事件:

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()方法使我发现问题在于我提出的域事件缺少域事件处理程序。再次干杯