2017-08-04 3 views
1

Pourquoi ne puis-je pas faire cela? Où la valeur obj est un type valide.Enregistrer un type lors de l'exécution à l'aide de Unity Container

Type type = obj.Value.GetType(); 
this.unityContainer.RegisterType<type>(); 

OU

this.unityContainer.RegisterType(obj.Value); 

Quand je peux le faire ... où la valeur obj serait le même type, mais connu au moment de la compilation.

this.unityContainer.RegisterType<object, actualType>("Name"); 

L'objectif final du mien est de pouvoir enregistrer plusieurs types différents au moment de l'exécution.

Répondre

0

Tout ce qui est entre crochets doit être connu au moment de la compilation - les génériques sont une fonctionnalité de compilation. Il y a beaucoup de surcharges de RegisterType qui prennent un objet Type déterminé à l'exécution comme vous le faites ici.

Déplacez votre référence de type d'exécution entre les chevrons et entre parenthèses.

this.unityContainer.RegisterType(obj.Value.GetType()); 
+0

erreur de frappe sur la dernière partie. – Marsh

+1

Ahh. la deuxième façon a fonctionné. Je ne l'ai jamais résolu avant de l'utiliser. Merci beaucoup pour l'info! – Marsh