2009-05-15 10 views
3

J'essaie d'enregistrer le même type mais avec deux constructeurs différents. Lorsque j'essaie de résoudre, je reçois "résolution de la dépendance a échoué" sur la deuxième résolution.Comment enregistrer deux fois le même type avec différents constructeurs dans Unity?

var container = new UnityContainer(); 

    container.RegisterType<IBar, Bar>() 
     .RegisterInstance(new Bar()) 
     .RegisterType<IBar, Bar>() 
     .RegisterInstance(new Bar("foo")); 

    Bar bar1 = (Bar)container.Resolve<IBar>(); 
    Bar bar2 = (Bar)container.Resolve<IBar>("foo"); // ERROR 

Qu'est-ce que je fais mal?

Répondre

6

Vous devez les nommer lors de l'inscription. Le paramètre Resolve est le nom de l'instance que vous voulez.

var container = new UnityContainer(); 

container 
    .RegisterInstance<IBar>("BAR", new Bar()) 
    .RegisterInstance<IBar>("FOOBAR", new Bar("foo")); 

Bar bar1 = (Bar)container.Resolve<IBar>("BAR"); 
Bar bar2 = (Bar)container.Resolve<IBar>("FOOBAR"); 
+0

Pouvez-vous me donner un exemple s'il vous plaît. – Vadim

+0

Maintenant, j'ai la même erreur lors de la résolution du premier. – Vadim

+0

La deuxième version fonctionne très bien. Merci beaucoup. – Vadim