Configurando a Inversão de controle (IoC) no ASP.NET MVC com Castle Windsor

Estou examinando o Pro ASP.NET MVC Framework de Sanderson e no capítulo 4 ele discuteCriando uma fábrica de controladores personalizados e parece que o método original,AddComponentLifeStyle ouAddComponentWithLifeStyle, usado para registrar controladores está obsoleto agora:

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);
    }
}

A nova sugestão é usarRegister(Component.For<I>().ImplementedBy<T>().Named(key).Lifestyle.Is(lifestyle)), mas não consigo descobrir como apresentar o tipo de controlador de implementação noImplementedBy<???>() método. eu tenteiImplementedBy<t>() eImplementedBy<typeof(t)>(), mas não consigo encontrar a maneira apropriada de transmitir o tipo de implementação. Alguma ideia?

questionAnswers(5)

yourAnswerToTheQuestion