Зарегистрировать компонент на основе имени параметра в запросчике в windsor

У меня есть этот интерфейс для использования AutoMapper:

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

Затем для каждого типа данных у меня есть свой класс сопоставления, например:

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

Тогда у меня есть IMapper как один из параметров в моем классе контроллера, как это:

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

Я использую Windsor в качестве IOC для своего приложения, и проблема в том, что я хочу зарегистрировать компоненты, чтобы при запуске в UsersController он использовал класс UserMapper, а при работе с ProductsController он использовал мой класс ProductMapper.

Мой регистрационный код выглядит примерно так:

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"))
)

Я сделал свою домашнюю работу на google и stackoverflow, и я знаю, что мне нужно использовать ServicesOverride, но я все еще застрял в этом, может кто-нибудь помочь мне, пожалуйста?

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос