2010-03-11 7 views
3

Existe-t-il un moyen de demander une instance de StructureMap ObjectFactory par le nom de chaîne du type? Par exemple, il serait bien de faire quelque chose comme ceci:Obtenir l'instance à partir de StructureMap par type Nom

var thing = ObjectFactory.GetInstance("Thing"); 

Le cas d'utilisation est ici un scénario de messagerie dans lequel le message est très générique et ne contient que le nom d'une tâche. Un gestionnaire reçoit le message, récupère le nom de la tâche dans le message et récupère le nom de type du programme d'exécution de tâches associé à partir d'une base de données de configuration. StructureMap analyse tous les assemblages dans un répertoire et l'un d'entre eux contiendra (vraisemblablement) le type renvoyé par la base de données de configuration qui doit ensuite être instanciée.

L'autre possibilité est de saisir une instance de type en procédant comme suit:

var type = Type.GetType("Thing"); 

Mais le problème il y a l'ensemble peut être chargé ou peut/pas dans le AppDomain de sorte que l'appel de réflexion est pas toujours possible.

+1

Si StructureMap a analysé les assemblys, ils seront chargés dans AppDomain. Si Type.GetType() ne peut pas l'obtenir, StructureMap ne le pourra pas non plus. –

Répondre

0

J'ai récemment eu le même problème de GetType ne renvoyant pas un événement de type si StructureMap l'avait correctement chargé à partir d'un assemblage analysé. Mon problème était que je n'utilisais pas le nom qualifié de l'assemblage et je présume que sans cela, la méthode GetType regarde simplement dans l'assemblage actuel. Quoi qu'il en soit, l'ajout du nom complet a résolu mon problème.

Espérons que cela aide.

Ian