Configurando la Inversión de Control (IoC) en ASP.NET MVC con Castle Windsor

Voy a repasar el Marco Pro ASP.NET MVC de Sanderson y en el Capítulo 4 analizaCreando una fábrica de controladores personalizados y parece que el método original,AddComponentLifeStyle oAddComponentWithLifeStyle, utilizado para registrar controladores, ahora está en desuso:

public class WindsorControllerFactory : DefaultControllerFactory
{
    IWindsorContainer container;

    public WindsorControllerFactory()
    {
        container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));

        // register all the controller types as transient
        var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                              where typeof(IController).IsAssignableFrom(t)
                              select t;

        //[Obsolete("Use Register(Component.For<I>().ImplementedBy<T>().Named(key).Lifestyle.Is(lifestyle)) instead.")]
        //IWindsorContainer AddComponentLifeStyle<I, T>(string key, LifestyleType lifestyle) where T : class;
        foreach (Type t in controllerTypes)
        {
            container.Register(Component.For<IController>().ImplementedBy<???>().Named(t.FullName).LifeStyle.Is(LifestyleType.Transient));
        }
    }

    // Constructs the controller instance needed to service each request
    protected override IController GetControllerInstance(Type controllerType)
    {
        return (IController)container.Resolve(controllerType);
    }
}

La nueva sugerencia es usarRegister(Component.For<I>().ImplementedBy<T>().Named(key).Lifestyle.Is(lifestyle)), pero no puedo entender cómo presentar el tipo de controlador de implementación en elImplementedBy<???>() método. Lo intentéImplementedBy<t>() yImplementedBy<typeof(t)>(), pero no puedo encontrar la forma adecuada de pasar el tipo de implementación. ¿Algunas ideas