2009-12-22 25 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