Пример #1
0
        public void TestResolveMultitonFromFactoryClearInstances()
        {
            _iocContainer.RegisterMultiton <ITest, Test, MultitonScope>();
            _iocContainer.RegisterFactory <ITestFactory>();

            MultitonScope scope1 = new MultitonScope();
            MultitonScope scope2 = new MultitonScope();

            ITestFactory testFactory = _iocContainer.Resolve <ITestFactory>();

            ITest resolvedTest1 = testFactory.Create(scope1);
            ITest resolvedTest2 = testFactory.Create(scope1);
            ITest resolvedTest3 = testFactory.Create(scope2);

            Assert.AreSame(resolvedTest1, resolvedTest2);
            Assert.AreNotSame(resolvedTest1, resolvedTest3);
            Assert.AreNotSame(resolvedTest2, resolvedTest3);

            testFactory.ClearMultitonInstance <ITest>();

            ITest resolvedTest4 = testFactory.Create(scope1);
            ITest resolvedTest5 = testFactory.Create(scope2);

            Assert.AreNotSame(resolvedTest1, resolvedTest4);
            Assert.AreNotSame(resolvedTest2, resolvedTest4);
            Assert.AreNotSame(resolvedTest3, resolvedTest5);
        }
Пример #2
0
        public void TestResolveMultiton()
        {
            _iocContainer.RegisterMultiton <ITest, Test, MultitonScope>();

            MultitonScope scope1 = new MultitonScope();
            MultitonScope scope2 = new MultitonScope();

            ITest resolvedTest1 = _iocContainer.Resolve <ITest>(scope1);
            ITest resolvedTest2 = _iocContainer.Resolve <ITest>(scope1);
            ITest resolvedTest3 = _iocContainer.Resolve <ITest>(scope2);

            Assert.AreSame(resolvedTest1, resolvedTest2);
            Assert.AreNotSame(resolvedTest1, resolvedTest3);
            Assert.AreNotSame(resolvedTest2, resolvedTest3);
        }
Пример #3
0
        public void TestRegisterAndResolveMultipleMultitonRegistration()
        {
            _iocContainer.RegisterMultiton <IProvider, ITest, Test, MultitonScope>();

            MultitonScope scope = new MultitonScope();

            ITest test = _iocContainer.Resolve <ITest>(scope);

            Assert.NotNull(test);

            IProvider provider = _iocContainer.Resolve <IProvider>(scope);

            Assert.NotNull(provider);
            Assert.AreEqual(test, provider);
            Assert.AreSame(test, provider);
        }
Пример #4
0
        public void TestMultipleMultitonRegistrationOnCreate()
        {
            _iocContainer.RegisterMultiton <IProvider, ITest, Test, MultitonScope>().OnCreate(t => t.DoSomething(1));

            MultitonScope scope = new MultitonScope();

            ITest test = _iocContainer.Resolve <ITest>(scope);

            Assert.NotNull(test);
            Assert.AreEqual(1, test.Number);

            IProvider provider = _iocContainer.Resolve <IProvider>(scope);

            Assert.NotNull(provider);
            Assert.AreEqual(1, provider.Number);

            Assert.AreEqual(test, provider);
            Assert.AreSame(test, provider);
        }