如何在Unity中使用不同的构造函数两次注册相同的类型?

我正在尝试注册相同的类型,但有两个不同的构造函数。 当我尝试解决时,我在第二个Resolve上得到“ 依赖失败的解决方案”。

var container = new UnityContainer(); container.RegisterType() .RegisterInstance(new Bar()) .RegisterType() .RegisterInstance(new Bar("foo")); Bar bar1 = (Bar)container.Resolve(); Bar bar2 = (Bar)container.Resolve("foo"); // ERROR 

我做错了什么?

你需要在注册时给他们起名字。 Resolve的参数是您想要的实例的名称。

 var container = new UnityContainer(); container .RegisterInstance("BAR", new Bar()) .RegisterInstance("FOOBAR", new Bar("foo")); Bar bar1 = (Bar)container.Resolve("BAR"); Bar bar2 = (Bar)container.Resolve("FOOBAR");