Пример #1
0
        public void DisposedInheritedContainersNoLongerResolveBindings()
        {
            var parentContainer = new ExtraContainer1();

            parentContainer.Bind <Interface, ConcreteInterface>().AsSingleton();
            parentContainer.Bind <AbstractClass, ConcreteAbstractClass>();

            var container = new ExtraContainer2(typeof(ExtraContainer1));

            container.Bind <Interface, ConcreteInterface>().AsSingleton();

            var abstractClass   = container.Resolve <AbstractClass>();
            var parentInterface = parentContainer.Resolve <Interface>();
            var childInterface  = container.Resolve <Interface>();

            parentContainer.Dispose();

            Assert.Throws <Exception>(() => container.Resolve <AbstractClass>());
            Assert.Throws <Exception>(() => parentContainer.Resolve <Interface>());
            var childInterfaceSecond = container.Resolve <Interface>();

            Assert.NotNull(abstractClass);
            Assert.NotNull(parentInterface);
            Assert.NotNull(childInterface);
            Assert.NotNull(childInterfaceSecond);
            Assert.AreEqual(childInterface, childInterfaceSecond);
            Assert.AreNotEqual(childInterface, parentInterface);
        }
Пример #2
0
        public void DisposingAContainerRemovesFromTheContext()
        {
            var container = new ExtraContainer1();

            container.Dispose();
            Assert.Throws <Exception>(() => Context.GetContainerByType <ExtraContainer1>());
            Assert.Throws <Exception>(() => Context.GetContainerByType(typeof(ExtraContainer1)));
        }