2 , !
"cage2".
:
var cage2 = container.Resolve<ICage>("cage2");
:
new InjectionFactory(c => c.Resolve<Cage>(new ParameterOverride("animal", new Dog()))));
c.Resolve<Cage>, Cage new Dog() IAnimal. ! :
container.RegisterType<ICage, Cage>(new ContainerControlledLifetimeManager());
! c.Resolve<Cage> Cage Dog. , ContainerControlled, , :
var cage = container.Resolve<ICage>();
, !
:
[TestClass]
public class UnityTest
{
[TestMethod]
public void MyTest()
{
var container = new UnityContainer();
container.RegisterType<IAnimal, Cat>(new ContainerControlledLifetimeManager());
container.RegisterType<ICage, Cage>(new ContainerControlledLifetimeManager());
container.RegisterType<ICage>(
"cage2",
new ContainerControlledLifetimeManager(),
new InjectionFactory(c => new Cage(new Dog())));
var cage2 = container.Resolve<ICage>("cage2");
Assert.AreEqual("Canis lupus", cage2.Animal.Species);
var cage = container.Resolve<ICage>();
Assert.AreEqual("Felis catus", cage.Animal.Species);
}
}