Castle Windsor - Cómo asignar una instancia con nombre en la inyección del constructor

Tal vez esto sea fácil, pero buscarlo en Internet ya me causa dolor de cabeza

Aquí está el 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>();

¿Alguna idea?

EDITAR

estoy registradoValidatorA yValidatorB conNamed, ahora el problema de cómo Castle Windsor puede inyectar esos validadores correctamente en elClassA yClassB, ¿Hay una manera de hacerlo? ¿O hay alguna solución mejor?

Si hay alguien que piense que el diseño de mi clase es incorrecto, abro para cualquier consejo. Hasta ahora creo que es correcto. Sí, el validador tiene una configuración específica para la clase específica. Pero hay razones por las que se abstrae:

El validador es un objeto complejo, en algún momento debería conectarse a la base de datos, por lo que DEBO pasar la interfaz en lugar de la implementación al constructor por razones de prueba unitaria.No hay forma de usar una interfaz diferente para ninguno de Validator, porque el único método que usé esValidateYo creo queMyBaseClass.Validate() una comúnmétodo de plantilla patrón no es?

Respuestas a la pregunta(2)

Su respuesta a la pregunta