Not sure what I am doing wrong here as according to IOC-56 ( which has been applied ) the following scenario should work:
Register IServiceSix + implementation in parent container. IServiceSix impl depends on IServiceThree. Register IServiceThree + implementation in child container. Resolve IServiceSix via child container. Expected that IServiceThree dependency is satisfied by child container, but getting a handler exception: Castle.MicroKernel.Handlers.HandlerException: Can't create component 'ServiceSix' as it has dependencies to be satisfied. ServiceSix is waiting for the following dependencies: Services: - Castle.Windsor.Tests.SubContainers.ChildContainerSingleResolutionTestCase +IServiceThree which was not registered. Relevant parts of the unit test shown below, full unit test is at http://gist.github.com/395377. Please note that uncommenting the commented out line in the gist makes the test pass. using NUnit.Framework; namespace Castle.Windsor.Tests.SubContainers { [TestFixture] public class ChildContainerSingleResolutionTestCase { private IWindsorContainer parentContainer; private IWindsorContainer childContainer; [SetUp] public void Init() { parentContainer = new WindsorContainer(); parentContainer.AddComponent("ServiceOne", typeof(IServiceOne), typeof(ServiceOneImpl)); parentContainer.AddComponent("ServiceTwo", typeof(IServiceTwo), typeof(ServiceTwoImpl)); parentContainer.AddComponent("ServiceSix", typeof(IServiceSix), typeof(ServiceSixImpl)); childContainer = new WindsorContainer(); parentContainer.AddChildContainer(childContainer); childContainer.AddComponent("ServiceThree", typeof(IServiceThree), typeof(ServiceThreeImpl)); childContainer.AddComponent("ServiceFour", typeof(IServiceFour), typeof(ServiceFourImpl)); childContainer.AddComponent("ServiceFive", typeof(IServiceFive), typeof(ServiceFiveImpl)); } [Test] public void ResolveComplexServiceRegisteredInParentWithDependenciesRegisteredInChild() { IServiceThree serviceThree = childContainer.Resolve<IServiceThree>(); //Proves that IServiceThree can be resolved via child Assert.IsNotNull( serviceThree ); Assert.IsInstanceOf<ServiceThreeImpl>( serviceThree ); IServiceSix serviceSix = childContainer.Resolve<IServiceSix>(); // This line fails =( Assert.IsNotNull( serviceSix ); Assert.IsNotNull( serviceSix.GetServiceThree() ); Assert.IsInstanceOf<ServiceThreeImpl>( serviceSix.GetServiceThree() ); } public interface IServiceOne { } public class ServiceOneImpl : IServiceOne { } public interface IServiceTwo { IServiceOne GetServiceOne(); } public class ServiceTwoImpl : IServiceTwo { private readonly IServiceOne serviceOne; public ServiceTwoImpl(IServiceOne serviceOne) { this.serviceOne = serviceOne; } public IServiceOne GetServiceOne() { return serviceOne; } } public interface IServiceThree { } public class ServiceThreeImpl : IServiceThree { } public class ServiceThreeAImpl : IServiceThree { } public interface IServiceFour { IServiceThree GetServiceThree(); } public class ServiceFourImpl : IServiceFour { private readonly IServiceThree serviceThree; public ServiceFourImpl(IServiceThree serviceThree) { this.serviceThree = serviceThree; } public IServiceThree GetServiceThree() { return serviceThree; } } public interface IServiceFive { IServiceOne GetServiceOne(); } public class ServiceFiveImpl : IServiceFive { private readonly IServiceOne serviceOne; public ServiceFiveImpl(IServiceOne serviceOne) { this.serviceOne = serviceOne; } public IServiceOne GetServiceOne() { return serviceOne; } } public interface IServiceSix { IServiceThree GetServiceThree(); } public class ServiceSixImpl : IServiceSix { private readonly IServiceThree serviceThree; public ServiceSixImpl(IServiceThree serviceThree) { this.serviceThree = serviceThree; } public IServiceThree GetServiceThree() { return serviceThree; } } } } -- You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en.
