Fixed in http://github.com/castleproject/Castle.InversionOfControl/commit/80bb75a69772396dbc2ad56a9753a5dc5db9b5dd
Can you give it a try? Cheers, Mauricio On Apr 2, 9:32 pm, Germán Schuager <[email protected]> wrote: > Hi, I have the following class: > > public class Service > { > public ComponentX X { get; private set; } > public ComponentY Y { get; private set; } > public ComponentA A { get; private set; } > > public Service(ComponentA a) > { > A = a; > } > > public Service(ComponentX x, ComponentY y) > { > X = x; > Y = y; > } > } > > and the following test: > > [Test] > public void Kernel_should_select_ctor_with_available_dependencies() > { > var kernel = new DefaultKernel(); > kernel.AddComponent<ComponentX>(); > kernel.AddComponent<ComponentY>(); > kernel.AddComponent<Service>(); > > var service = kernel.Resolve<Service>(); > > Assert.That(service.A, Is.Null); > Assert.That(service.X, Is.Not.Null); > Assert.That(service.Y, Is.Not.Null); > } > > The test fails with this message: > > TestCase > 'Castle.MicroKernel.Tests.xxx.Kernel_should_select_ctor_with_available_depe > ndencies' > failed: Castle.MicroKernel.Handlers.HandlerException : Can't create > component 'Castle.MicroKernel.Tests.xxx+Service' as it has dependencies to > be satisfied. > Castle.MicroKernel.Tests.xxx+Service is waiting for the following > dependencies: > > Services: > - Castle.MicroKernel.Tests.xxx+ComponentA which was not registered. > Handlers\DefaultHandler.cs(114,0): at > Castle.MicroKernel.Handlers.DefaultHandler.AssertNotWaitingForDependency() > Handlers\DefaultHandler.cs(53,0): at > Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext > context, Boolean track) > Handlers\AbstractHandler.cs(189,0): at > Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context) > DefaultKernel.cs(936,0): at > Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type > service, IDictionary additionalArguments) > DefaultKernel.cs(918,0): at > Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type > service) > DefaultKernel_Resolve.cs(68,0): at > Castle.MicroKernel.DefaultKernel.get_Item(Type service) > DefaultKernel_Resolve.cs(199,0): at > Castle.MicroKernel.DefaultKernel.Resolve(Type service) > DefaultKernel_Resolve.cs(157,0): at > Castle.MicroKernel.DefaultKernel.Resolve[T]() > BestConstructorTestCase.cs(213,0): at > Castle.MicroKernel.Tests.xxx.Kernel_should_select_ctor_with_available_depen > dencies() > > Is this behavior by design? > I don't want to (cannot) register ComponentA in the kernel. How can I tell > MK to use the second ctor? -- 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.
