Пример #1
0
        public void MappingTypeWithScopes()
        {
            IDependencyContainer root = CreateContainer();

            root.Definitions
            .AddScoped <IOutputWriter, StringOutputWriter>("S1")
            .AddScoped <IOutputWriter, ConsoleOutputWriter>("S2");

            IOutputWriter writer;

            using (IDependencyProvider s1 = root.Scope("S1"))
            {
                writer = s1.Resolve <IOutputWriter>();
                Assert.IsInstanceOfType(writer, typeof(StringOutputWriter));

                using (IDependencyProvider s2 = s1.Scope("S2"))
                {
                    writer = s2.Resolve <IOutputWriter>();
                    Assert.IsInstanceOfType(writer, typeof(ConsoleOutputWriter));
                }

                writer = s1.Resolve <IOutputWriter>();
                Assert.IsInstanceOfType(writer, typeof(StringOutputWriter));
            }

            using (IDependencyProvider s2 = root.Scope("S2"))
            {
                writer = s2.Resolve <IOutputWriter>();
                Assert.IsInstanceOfType(writer, typeof(ConsoleOutputWriter));
            }

            TryCatchUnResolvable <IOutputWriter>(root);
        }
Пример #2
0
        public void RegisteredOnlyInsideScope()
        {
            IDependencyContainer root = CreateContainer();

            root.Definitions
            .AddScoped <string>("S1", "Hello")
            .AddScoped <int>("S2", 5);

            IDependencyDefinition definition;

            Assert.IsTrue(root.Definitions.TryGet(typeof(string), out definition));
            Assert.IsFalse(definition.IsResolvable);
            Assert.IsTrue(root.Definitions.TryGet(typeof(int), out definition));
            Assert.IsFalse(definition.IsResolvable);

            using (IDependencyContainer s1 = root.Scope("S1"))
            {
                Assert.IsTrue(s1.Definitions.TryGet(typeof(string), out definition));
                Assert.IsTrue(definition.IsResolvable);
                Assert.IsTrue(s1.Definitions.TryGet(typeof(int), out definition));
                Assert.IsFalse(definition.IsResolvable);

                using (IDependencyContainer s2 = s1.Scope("S2"))
                {
                    Assert.IsTrue(s2.Definitions.TryGet(typeof(string), out definition));
                    Assert.IsTrue(definition.IsResolvable);
                    Assert.IsTrue(s2.Definitions.TryGet(typeof(int), out definition));
                    Assert.IsTrue(definition.IsResolvable);
                }

                Assert.IsTrue(s1.Definitions.TryGet(typeof(string), out definition));
                Assert.IsTrue(definition.IsResolvable);
                Assert.IsTrue(s1.Definitions.TryGet(typeof(int), out definition));
                Assert.IsFalse(definition.IsResolvable);
            }

            Assert.IsTrue(root.Definitions.TryGet(typeof(string), out definition));
            Assert.IsFalse(definition.IsResolvable);
            Assert.IsTrue(root.Definitions.TryGet(typeof(int), out definition));
            Assert.IsFalse(definition.IsResolvable);
        }
Пример #3
0
        public void Basic()
        {
            IDependencyContainer container1 = CreateContainer();

            container1.Definitions.AddTransient <IHelloService, HiService>();
            IDependencyDefinition definition1;

            Assert.IsTrue(container1.Definitions.TryGet(typeof(IHelloService), out definition1));
            Assert.IsTrue(definition1.IsResolvable);

            IDependencyContainer container2 = container1.Scope("S1");

            Assert.IsTrue(container2.Definitions.TryGet(typeof(IHelloService), out definition1));
            Assert.IsTrue(definition1.IsResolvable);

            container2.Definitions.AddTransient <IOutputWriter, StringOutputWriter>();
            Assert.IsTrue(container2.Definitions.TryGet(typeof(IOutputWriter), out definition1));
            Assert.IsTrue(definition1.IsResolvable);

            Assert.IsFalse(container1.Definitions.TryGet(typeof(IOutputWriter), out definition1));
        }
Пример #4
0
        public void DependencyInTextScope()
        {
            IDependencyContainer root = CreateContainer();

            root.Definitions
            .AddTransient <IHelloService, HiService>()
            .AddScoped <IMessageFormatter, StringMessageFormatter>("S1");

            IHelloService helloService;

            TryCatchUnResolvable <IHelloService>(root);

            using (IDependencyProvider s1 = root.Scope("S1"))
            {
                TryCatchUnResolvable <IHelloService>(root);

                helloService = s1.Resolve <IHelloService>();
                Assert.IsTrue(s1.TryResolve <IHelloService>(out helloService));
            }

            TryCatchUnResolvable <IHelloService>(root);
            Assert.IsFalse(root.TryResolve <IHelloService>(out helloService));
        }
Пример #5
0
        public void InAnyScope()
        {
            Counter.count = 0;

            IDependencyContainer root = CreateContainer();

            root.Definitions
            .AddScoped <Counter>();

            Counter counter;

            counter = root.Resolve <Counter>();
            Assert.AreEqual(1, counter.Count);

            counter = root.Resolve <Counter>();
            Assert.AreEqual(1, counter.Count);

            using (IDependencyContainer s1 = root.Scope("S1"))
            {
                counter = s1.Resolve <Counter>();
                Assert.AreEqual(2, counter.Count);

                counter = s1.Resolve <Counter>();
                Assert.AreEqual(2, counter.Count);

                using (IDependencyContainer s2 = root.Scope("S2"))
                {
                    counter = s2.Resolve <Counter>();
                    Assert.AreEqual(3, counter.Count);

                    counter = s2.Resolve <Counter>();
                    Assert.AreEqual(3, counter.Count);
                }

                counter = s1.Resolve <Counter>();
                Assert.AreEqual(3, counter.Count);

                using (IDependencyContainer s2 = root.Scope("S2"))
                {
                    counter = s2.Resolve <Counter>();
                    Assert.AreEqual(4, counter.Count);

                    counter = s2.Resolve <Counter>();
                    Assert.AreEqual(4, counter.Count);
                }

                counter = s1.Resolve <Counter>();
                Assert.AreEqual(4, counter.Count);
            }

            counter = root.Resolve <Counter>();
            Assert.AreEqual(4, counter.Count);

            using (IDependencyContainer s1 = root.Scope("S1"))
            {
                counter = s1.Resolve <Counter>();
                Assert.AreEqual(5, counter.Count);

                counter = s1.Resolve <Counter>();
                Assert.AreEqual(5, counter.Count);
            }

            counter = root.Resolve <Counter>();
            Assert.AreEqual(5, counter.Count);
        }