here we go! that's mbunit, but you have this adapted to whatever framework
you use in 1 min

using Castle.MicroKernel.Registration;
using System.Diagnostics;
using Castle.Windsor;
using MbUnit.Framework;

namespace ProjectBase.Utils.Tests
{
    public class TestContainerOrder
    {
        [Test]
        public void
Services_should_keep_the_order_they_were_registered_when_retrieved_as_an_array()
        {
            var container = new WindsorContainer();
            container.Register(

Component.For<IService>().ImplementedBy<Service1>().Named(typeof(Service1).Name),

Component.For<IService>().ImplementedBy<Service2>().Named(typeof(Service2).Name),

Component.For<IService>().ImplementedBy<Service3>().Named(typeof(Service3).Name),

Component.For<IConsume>().ImplementedBy<Consumer>().ServiceOverrides(ServiceOverride
                                        .ForKey("Services")
                                        .Eq(new[]
                                                  {
                                                      typeof
(Service3).Name,
                                                    typeof (Service1).Name,
                                                    typeof (Service2).Name
                                                  }))
                );
            var consumer = container.Resolve<IConsume>();
            consumer.DoIt();
            AssertEx.That(() => consumer.Services[1].GetType() ==
typeof(Service3));
            AssertEx.That(() => consumer.Services[2].GetType() ==
typeof(Service1));
            AssertEx.That(() => consumer.Services[3].GetType() ==
typeof(Service2));
        }
    }

    public interface IService { }
    public class Service1 : IService { }
    public class Service2 : IService { }
    public class Service3 : IService { }
    public class Consumer : IConsume
    {
        public IService[] Services { get; set; }
        public void DoIt()
        {
            foreach (var service in Services)
            {
                Debug.Write(service.GetType().Name);
            }
        }
    }

    public interface IConsume
    {
        IService[] Services { get; set; }
        void DoIt();
    }
}

2009/12/1 Krzysztof Koźmic (2) <[email protected]>

> Jan,
>
> could you provide a complete, failing test case, so that we're both on
> the same page?
>
> Krzysztof
>
> On 1 Gru, 08:46, Krzysztof Koźmic (2) <[email protected]> wrote:
> > I see no reason why that works that way.
> >
> > I'll have a look into it, once I get home.
> >
> > On 30 Lis, 17:45, Jan Limpens <[email protected]> wrote:
> >
> > > I register some components like this:
> >
> > >                 Component.For<IRoutesSetup>()
> > >                     .ImplementedBy<RoutesSetup>()
> > >                     .LifeStyle.Transient
> > >                     .ServiceOverrides(ServiceOverride
> > >                                         .ForKey("RoutingProviders")
> > >                                         .Eq(new[]
> > >                                                   {
> > >                                                       typeof
> > > (CmsPagesRoutesProvider).Name,
> > >                                                     typeof
> > > (DomainRoutesProvider).Name,
> > >                                                     typeof
> > > (XmlRoutesProvider).Name
> > >                                                   }))
> >
> > > but upon resolving IRoutesSetup its RoutingProviders are in a different
> > > order. In xml I pass a list of service references (list/items style)
> and
> > > this does not seem to happen. Any way to do this fluently as well?
> >
> > > --
> > > Jan
> >
> >
>
> --
>
> 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.
>
>
>


-- 
Jan

--

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