如何使用StructureMap获取所有泛型类的实例

4

在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);
            }
        }

我正在使用StructureMap注册表进行注册,代码如下:

x.AddAllTypesOf(typeof(IDomainEventHandler<>));

上面的第一个块抛出了一个未知错误 - 结构映射代码400。有谁知道我如何从结构映射容器中获取特定类型的泛型类?

TIA

安德鲁

1个回答

5
我首先要检查的是以下内容的输出:

我首先要检查的是以下内容的输出:

Console.WriteLine(ObjectFactory.WhatDoIHave());

请确保您的事件处理程序按照您的期望进行注册。

如果类按照您的期望进行注册,那么我认为这是解决IDomainEventHandler的方法:

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

谢谢,WhatDoIHave() 方法让我看到问题是由于我触发的领域事件缺少事件处理程序引起的。再次感谢! - REA_ANDREW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接