Castle Windsor - Como mapear instância nomeada em injeção de construtor

talvez isso seja fácil, mas procurar na internet já me dá dor de cabeça

aqui está o problema:

interface IValidator
{
    void Validate(object obj);
}

public class ValidatorA : IValidator
{
    public void Validate(object obj) { }
}

public class ValidatorB : IValidator
{
    public void Validate(object obj) { }
}


interface IClassA { }
interface IClassB { }

public class MyBaseClass
{
    protected IValidator validator;

    public void Validate()
    {
        validator.Validate(this);
    }
}

public class ClassA : MyBaseClass, IClassA
{
    //problem: validator should ValidatorA
    public ClassA(IValidator validator) { }
}

public class ClassB : MyBaseClass, IClassB
{
    //problem: validator should ValidatorB
    public ClassB(IValidator validator) { }
}

public class OtherClass
{
    public OtherClass(IClassA a, IClassB b) { }
}


//on Main
var oc = container.Resolve<OtherClass>();

Qualquer ideia?

EDITAR

eu registreiValidatorA eValidatorB comNamed, agora o problema como Castle Windsor pode injetar esses validador corretamente para oClassA eClassBexiste uma maneira de fazer isso? ou existe alguma solução melhor?

Se alguém acha que o meu design de classe está errado, por favor, abro para qualquer conselho. Até agora eu acho correto. Sim, o validador tem uma configuração específica para uma classe específica. mas há razões que são abstraídas:

Validator é um objeto complexo, em algum momento deve se conectar ao banco de dados, então eu devo passar interface em vez de implementação para construtor por motivo de teste de unidade.Não há maneira de usar uma interface diferente para qualquer um dos Validadores, porque o único método que eu usei éValidateeu acho queMyBaseClass.Validate() um comummétodo de modelo padrão não é?

questionAnswers(2)

yourAnswerToTheQuestion