title: Can Autofac return all services for a type in the same order they were registered?
body: <p>I'm contributing to an open source project that is looking to support multiple containers for its internal services. One of the requirements for supported containers is that order of registration matters. So, if several implementations of an interface are registered in a particular order, when a list of those services is resolved, the implementations should be returned in the same order they were registered.</p>
  
  <pre><code>var builder = new ContainerBuilder();
  builder.RegisterType&lt;PreferredService&gt;().As&lt;IService&gt;();
  builder.RegisterType&lt;AlternativeService&gt;().As&lt;IService&gt;();
  builder.RegisterType&lt;AdditionalService&gt;().As&lt;IService&gt;();
  ...
  // Get the first (preferred) implementation of IService.
  var possibleServices = container.Resolve&lt;IEnumerable&lt;IService&gt;&gt;();
  IService idealServiceImplementation = possibleServices.FirstOrDefault();
  </code></pre>
  
  <p>My testing shows that Autofac returns the services is reverse order. Is this always the case? Can I trust they will resolve in reverse order every time? Will this behavior be consistent even if I register some of the later services after other registrations for different interfaces? Can I intercept implicit calls to Resolve for lists?</p>
  
  <p>Is there a way to instruct Autofac that registration order matters?</p>