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); }
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); }