如何使用结构图获取泛型类的所有实例

REA*_*REW 4 .net c# structuremap

在结构图中,我有以下行处理域事件:

public void Dispatch<TEvent>(TEvent eventToDispatch) where TEvent : IDomainEvent
        {
            foreach (var handler in ObjectFactory.GetAllInstances<IDomainEventHandler<TEvent>>())
            {
                if (handler.IsActive)
                    handler.Handle(eventToDispatch);
            }
        }
Run Code Online (Sandbox Code Playgroud)

我在StructureMap注册表中注册这些:

x.AddAllTypesOf(typeof(IDomainEventHandler<>));
Run Code Online (Sandbox Code Playgroud)

上面的第一个块引发了一个Unknown错误 - Structure Map Code 400.有谁知道如何从strcuture map容器中获取特定类型的泛型类?

TIA

安德鲁

Jer*_*ebe 5

我要检查的第一件事是以下输出:

Console.WriteLine(ObjectFactory.WhatDoIHave());
Run Code Online (Sandbox Code Playgroud)

确保您的事件处理程序正在按预期注册.

如果类按照您的意愿注册,那么我认为这就是您要解决IDomainEventHandler的方法:

foreach (var handler in ObjectFactory.ForObject(eventToDispatch)
                                     .GetAllClosedTypesOf(typeof(IDomainEventHandler<>))
                                     .As<IDomainEventHandler<TEvent>>())
Run Code Online (Sandbox Code Playgroud)