Пример #1
0
        public void TestDisposeAndReConfiguration()
        {
            var container = new DependencyInjector(new ServiceConfiguration(), new MoreConfig());
            Assert.IsNotNull(container);

            Assert.IsTrue(container.ContainsObject<ISomeDomainCmdService>());
            Assert.IsTrue(container.ContainsObject<ICommandManager>());
            Assert.IsTrue(container.ContainsObject("SomeDomainCmdServiceB"));

            container.ExpandConfiguration(new ComplexConfig());
            Assert.IsTrue(container.ContainsObject<IAggregate>());

            container.Reconfigure();
            Assert.IsTrue(container.ContainsObject<ISomeDomainCmdService>());
            Assert.IsTrue(container.ContainsObject<ICommandManager>());
            Assert.IsTrue(container.ContainsObject("SomeDomainCmdServiceB"));
            Assert.IsTrue(container.ContainsObject<IAggregate>());

            IAggregate aggregate = container.GetObject<IAggregate>();
            Assert.IsNotNull(aggregate);

            var b = container.GetObject("SomeDomainCmdServiceB");
            Assert.IsNotNull(b);

            container.Dispose();

            Assert.Throws<DependencyInjectorGetObjectException>(() => container.GetObject("SomeDomainCmdServiceB"));
            container = new DependencyInjector(new ServiceConfiguration(), new MoreConfig());
            Assert.IsNotNull(container);

            Assert.IsTrue(container.ContainsObject<ISomeDomainCmdService>());
            Assert.IsTrue(container.ContainsObject<ICommandManager>());
            Assert.IsTrue(container.ContainsObject("SomeDomainCmdServiceB"));

            container.ExpandConfiguration(new ComplexConfig());
            Assert.IsTrue(container.ContainsObject<IAggregate>());

            container.Reconfigure();
            Assert.IsTrue(container.ContainsObject<ISomeDomainCmdService>());
            Assert.IsTrue(container.ContainsObject<ICommandManager>());
            Assert.IsTrue(container.ContainsObject("SomeDomainCmdServiceB"));
            Assert.IsTrue(container.ContainsObject<IAggregate>());

            aggregate = container.GetObject<IAggregate>();
            Assert.IsNotNull(aggregate);

            b = container.GetObject("SomeDomainCmdServiceB");
            Assert.IsNotNull(b);
        }