示例#1
0
        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());
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }