Frage

Ich arbeite FluentValidation Arbeiten mit Schloss Windsor auf zu bekommen. Ich habe bereits einen Wrapper um Schloss Windsor. Hier ist der Code für das:

public class ResolveType  
{  
    private static IWindsorContainer _windsorContainer;  

    public static void Initialize( IWindsorContainer windsorContainer )  
    {  
        _windsorContainer = windsorContainer;  
    }  

    public static T Of<T>()  
    {  
        return _windsorContainer.Resolve<T>();  
    }  
}  

Ich versuche, die FluentValidation Fabrik zu bauen, wie unter http://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-container

Der Artikel verwendet StructureMap, aber ich dachte, dass ich es auf Schloss Windsor wie folgt anpassen konnte:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase
{

    public override IValidator CreateInstance( Type validatorType)
    {
        return ResolveType.Of<validatorType>();
    }
}

Beachten Sie, ich bin nur versucht, in meine Wrapper zu nennen, so dass Windsor die Typenbezeichnung auflösen kann.

Das Problem ist, dass dies nicht kompiliert. Ich erhalte 'Der Typ oder Namespace-Name ‚validatorType‘ konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)

Wie kann ich diese Arbeit machen?

War es hilfreich?

Lösung

Fügen Sie diese Methode, um Ihre ResolveType Klasse:

public static object Of(Type type) {
  return _windsorContainer.Resolve(type);
}

Dann in Ihrem CastleWindsorValidatorFactory:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase {
    public override IValidator CreateInstance(Type validatorType) {
        return ResolveType.Of(validatorType) as IValidator;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top