public void ResolveWithParameterInParentContainer() { var container1 = new NDOContainer(); container1.RegisterType <Driver>(); var container2 = container1.CreateChildContainer(); container2.RegisterInstance <ICar>(new BMW()); var drv = container2.Resolve <Driver>(); Assert.NotNull(drv); Assert.AreEqual("Running BMW - 1 mile", drv.RunCar()); container1 = new NDOContainer(); container1.RegisterInstance <ICar>(new BMW()); container2 = container1.CreateChildContainer(); container2.RegisterType <Driver>(); drv = container2.Resolve <Driver>(); Assert.NotNull(drv); Assert.AreEqual("Running BMW - 1 mile", drv.RunCar()); }
public void ResolveInstanceWithChildContainer() { INDOContainer container1 = new NDOContainer(); container1.RegisterInstance <ICar>(new BMW()); var car1 = container1.Resolve <ICar>(); var container2 = container1.CreateChildContainer(); var car2 = container2.Resolve <ICar>(); Assert.AreSame(car1, car2); container2.RegisterInstance <ICar>(new BMW()); car2 = container2.Resolve <ICar>(); Assert.AreNotSame(car1, car2); container2.Dispose(); car2 = container1.Resolve <ICar>(); Assert.AreSame(car1, car2); }
public void ResolveWithChildContainer2() { INDOContainer container1 = new NDOContainer(); container1.RegisterType <ICar, BMW>(new ContainerControlledLifetimeManager()); var car1 = container1.Resolve <ICar>(); var container2 = container1.CreateChildContainer(); var car2 = container2.Resolve <ICar>(); Assert.AreSame(car1, car2); container2.RegisterType <ICar, BMW>(/* Transient */); car2 = container2.Resolve <ICar>(); Assert.AreNotSame(car1, car2); container2.Dispose(); car2 = container1.Resolve <ICar>(); Assert.AreSame(car1, car2); }