2009-12-22 3 views
4

sur la carte de structure I ont la ligne suivante de travail avec les événements de domaine:Comment obtenir toutes les instances d'une classe générique avec carte de structure

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

J'inscris ces dans un registre StructureMap comme ceci:

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

Le premier bloc ci-dessus renvoie une erreur inconnue - Structure Map Code 400. Est-ce que quelqu'un sait comment je peux obtenir des types spécifiques de classe générique à partir du conteneur de carte strcuture?

TIA

Andrew

Répondre

5

La première chose que je voudrais vérifier est ce que les sorties suivantes:

Console.WriteLine(ObjectFactory.WhatDoIHave()); 

Assurez-vous que vos gestionnaires d'événements sont enregistrés comme prévu.

Si les classes sont enregistrées comme prévu, je pense que cela est la façon dont vous voulez résoudre votre de IDomainEventHandler:

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

Merci, la méthode WhatDoIHave() me conduisent à constater que la question était un domaine manquant gestionnaire d'événements pour l'événement de domaine que j'ai soulevé. Salut à nouveau –

Questions connexes