2009-12-22 70 views
4

在结构图我有以下符合域事件中的工作:如何获得与结构图泛型类的所有实例

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.有谁知道我如何从strcuture映射容器中获取特定类型的泛型类?

TIA

安德鲁

回答

5

我检查的第一件事是什么产出如下:

Console.WriteLine(ObjectFactory.WhatDoIHave()); 

确保为您期望的事件处理程序被注册。

如果像您期望的类被注册,那么我认为这是要如何解决您的IDomainEventHandler的:

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

感谢,对WhatDoIHave()方法使我看到的问题是缺少域名我提出的域事件的事件处理程序。再次欢呼 – 2010-01-07 10:42:38