Registro del componente basado en el nombre del parámetro en el solicitante en windsor

Tengo esta interfaz para usar AutoMapper:

public interface IMapper
{
    object Map(object source, Type sourceType, Type destinationType);
}

ntonces, para cada tipo de datos, tengo una clase de asignador diferente, por ejemplo:

 public class UserMapper : IMapper
{
    static UserMapper()
    {
        Mapper.CreateMap<User, UserViewModel>();
        Mapper.CreateMap<UserViewModel, User>();
    }

    public object Map(object source, Type sourceType, Type destinationType)
    {
        return Mapper.Map(source, sourceType, destinationType);
    }
}

Entonces tengo IMapper como uno de los parámetros en mi clase de controlador como este:

public UsersController(IUsersRepository repo, IMapper userMapper)
{....}

Estoy usando Windsor como IOC para mi aplicación y el problema es que quiero registrar los componentes, de modo que cuando se ejecuta en UsersController, use la clase UserMapper y si se ejecuta en ProductsController usará mi clase ProductMapper.

Mi código de registro parece algo similar a esto:

container.Register(
    Component.For<IMapper>()
             .ImplementedBy<UsersMapper>()
             .Named("usersMapper"),
    Component.For<IMapper>()
             .ImplementedBy<ProductsMapper>()
             .Named("productsMapper"),
    Component.For<ProductController>()
             .ServiceOverrides(ServiceOverride.ForKey("usersMapper").Eq("productsMapper"))
)

He hecho mi tarea en google y stackoverflow, y sé que necesito usar ServicesOverride pero todavía estoy atascado en esto, ¿alguien podría echarme una mano por favor?

Gracia

Respuestas a la pregunta(4)

Su respuesta a la pregunta