Thanks Mauricio.
Now that test pass, but if you register Service before its dependencies it
still fails.

On Fri, Apr 2, 2010 at 10:43 PM, Mauricio Scheffer <
[email protected]> wrote:

> 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]<castle-project-users%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/castle-project-users?hl=en.
>
>

-- 
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.

Reply via email to