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

时间:2009-12-22 13:02:41

标签: c# .net structuremap

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

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

安德鲁

1 个答案:

答案 0 :(得分:5)

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

Console.WriteLine(ObjectFactory.WhatDoIHave());

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

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

foreach (var handler in ObjectFactory.ForObject(eventToDispatch)
                                     .GetAllClosedTypesOf(typeof(IDomainEventHandler<>))
                                     .As<IDomainEventHandler<TEvent>>())