title: Is it possible to name "Forwards" individually and/or differently from the "For" service in Castle Windsor?
body: <p>I have a service interface that uses generics. That interface has multiple implementations. Those implementations also use generics and provide multiple concrete components for the closed service interface. For (<em>extremely</em> overly simplified) example:</p>
  <pre><code>public interface IService&lt;T1, T2&gt; { }
  
  public class ServiceImpl&lt;T&gt; : 
    IService&lt;IDbConnection, T&gt;,
    IService&lt;DbConnection, T&gt;,
    IService&lt;SqlConnection, T&gt; { }
  </code></pre>
  <p>Then having registration in Castle Windsor:</p>
  <pre><code>container.Register(Component
    .For&lt;IService&lt;SqlConnection, SomeOtherClass&gt;&gt;()
    .Named(NameHelper.GetName(typeof(SqlConnection), typeof(SomeOtherClass))
    .Forward&lt;IService&lt;DbConnection, SomeOtherClass&gt;&gt;()
    .Forward&lt;IService&lt;IDbConnection, SomeOtherClass&gt;&gt;()   
    .ImplementedBy&lt;ServiceImpl&lt;SomeOtherClass&gt;&gt;()
    .LifestyleTransient());
  </code></pre>
  <p>Is there any way to give alternate names to each of the <code>Forward</code>'s?  The problem can be solved, I'm guessing, by registering each <code>Foward</code> individually with its own name, but it would be nice to just be able to do something like:</p>
  <pre><code>.Forward&lt;IService&lt;DbConnection, SomeOtherClass&gt;&gt;(
      NameHelper.Getname(typeof(DbConnection), typeof(SomeOtherClass))
  </code></pre>
  <p>(Outside the scope of this simplified question and example, but I can probably also achieve the overall design goal using <code>IGenericServiceStrategy</code> and/or <code>IGenericImplementationMatchingStrategy</code> instead of registering each individual permutation, but I'm under time constraints so being able to just name the forwards individually would be great).</p>
  <p>The code in question is using Castle Windsor v3.3.0.</p>