title: Using Castle Windsor's fluent interface to register components in a decorator chain, when there are also specialised service-types?
body: <p>I am trying to implement a decorator chain for my data-access based on
  IRepository.  I have a Repository that does the data-
  access (at the moment just in-memory list) {1}, and I have one that
  does validation {2}.  On top of that, I have a specialisation of my
  Repository, IUsersRepository {3}, which defines another method on the
  base interface.  I am running on the latest trunk revision 5376.</p>
  
  <p>I would like to be able to register my components using the fluent
  interface - is it possible to specify, as it is via XML, the key of
  the service to use as the innerRepo?  If so, how?  (See <a href="http://blog.bittercoder.com/PermaLink,guid,4863e460-2985-475c-9266-80b4895e80de.aspx" rel="nofollow noreferrer">Bitter Coder Decorator tutorial</a>
  for an XML-config example).  I would prefer to not need to rely on the
  order of registrations, apart from anything else.</p>
  
  <p>I am following <a href="http://blog.bittercoder.com/PermaLink,guid,63653be2-d0d4-4a0b-b3e5-a1572aad5c8b.aspx" rel="nofollow noreferrer">this blog post</a>.</p>
  
  <p>I have been able to get the decorator chain working if I ask the
  container for IRepository  {4}; I see my
  ValidatingRepository methods get called before my data-access.  But I
  have not been able to get it working if I ask the container for
  IUserRepository (I get an InvalidCastException - I guess this is
  expected, but is it work-aroundable?).</p>
  
  <p>I would like to avoid needing to use one decorated-repo and one
  specialised-methods repository in my services; this strikes me as
  error-prone.  At the moment, my specialised methods are all to do with
  fetching entities by different criteria - I suppose I could make my
  Get method take a detached-criteria - that would allow me to only have
  one on my interface, and eliminate the need for the specialised
  interfaces.  Except that I'm not allowed to because we haven't decided
  to definitely use NHibernate.  Perhaps if I made IRepo.Get take a
  delegate or an IQueryable?  Any ideas?  I've been banging my head
  against this all morning and wouldn't be surprised if I have tunnel
  vision, and there's a different, better, approach; any suggestions are
  welcomed! </p>
  
  <p>{1} - {4} can be seen at <a href="http://utilitybase.com/paste/9003" rel="nofollow noreferrer">utilitybase</a>'s copy/paste facility.</p>