示例#1
0
        public void HandlerSelector_HasDefault()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            windsor.Register(Component.For <TestMain2>().LifeStyle.Transient);
            Assert.IsFalse(windsor.Resolve <TestMain2>().Resolved);

            var h = new TestHandlerSelector_HasDefault();

            windsor.Kernel.AddHandlerSelector(h);
            //原始默认组件
            windsor.Register(Component.For <ITest>().ImplementedBy <Test1>());
            //新组件
            windsor.Register(Component.For <ITest>().ImplementedBy <Test2>());

            //通过HandlerSelector启用新组件为默认组件
            h.Enable = true;
            Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved);
            Assert.IsInstanceOf <Test2>(windsor.Resolve <TestMain2>().Dependency);

            //通过HandlerSelector取消新组件
            h.Enable = false;
            Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved);
            //切换回原默认组件
            Assert.IsInstanceOf <Test1>(windsor.Resolve <TestMain2>().Dependency);
        }
示例#2
0
        public void HandlerSelector_HasDefault()
        {
            var windsor = new Castle.Windsor.WindsorContainer();

            windsor.Register(Component.For<TestMain2>().LifeStyle.Transient);
            Assert.IsFalse(windsor.Resolve<TestMain2>().Resolved);

            var h = new TestHandlerSelector_HasDefault();
            windsor.Kernel.AddHandlerSelector(h);
            //原始默认组件
            windsor.Register(Component.For<ITest>().ImplementedBy<Test1>());
            //新组件
            windsor.Register(Component.For<ITest>().ImplementedBy<Test2>());

            //通过HandlerSelector启用新组件为默认组件
            h.Enable = true;
            Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved);
            Assert.IsInstanceOf<Test2>(windsor.Resolve<TestMain2>().Dependency);

            //通过HandlerSelector取消新组件
            h.Enable = false;
            Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved);
            //切换回原默认组件
            Assert.IsInstanceOf<Test1>(windsor.Resolve<TestMain2>().Dependency);
        }