Castle Windsor - Zuordnen einer benannten Instanz in der Konstruktorinjektion

Vielleicht ist das einfach, aber die Suche im Internet bereitet mir schon Kopfschmerzen

hier ist das problem:

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

Irgendeine Idee?

BEARBEITEN

Ich registrierteValidatorA undValidatorB mitNamed, jetzt das Problem, wie Castle Windsor diesen Validator richtig in den injizieren kannClassA undClassBgibt es eine möglichkeit das zu tun? oder gibt es eine bessere lösung?

Wenn es jemanden gibt, der mein Klassendesign für falsch hält, bitte ich um Rat. Soweit ich es richtig finde. Ja, der Validator hat eine spezifische Konfiguration für eine spezifische Klasse. Aber es gibt Gründe, warum es abstrahiert wird:

Validator ist ein komplexes Objekt und sollte manchmal eine Verbindung zur Datenbank herstellen. Daher MUSS ich die Schnittstelle anstelle der Implementierung aus Gründen des Komponententests an den Konstruktor übergeben.Keine Möglichkeit, eine andere Schnittstelle für Validator zu verwenden, da die einzige Methode, die ich verwendet habe, istValidateMeiner Ansicht nachMyBaseClass.Validate() eine gemeinsameTemplate-Methode Muster nicht wahr?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage