2

私は、Castle Windsor で FluentValidation を動作させることに取り組んでいます。私はすでにウィンザー城のラッパーを持っています。そのためのコードは次のとおりです。

public class ResolveType  
{  
    private static IWindsorContainer _windsorContainer;  

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

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

http://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-containerで説明されているように、FluentValidation ファクトリを構築しようとしています。

この記事では StructureMap を使用していますが、次のように Castle Windsor に適用できると考えました。

public class CastleWindsorValidatorFactory : ValidatorFactoryBase
{

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

Windsor が型参照を解決できるように、ラッパーを呼び出そうとしているだけです。

問題は、これがコンパイルされないことです。「型または名前空間名 'validatorType' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)」

どうすればこれを機能させることができますか?

4

1 に答える 1

4

ResolveTypeこのメソッドをクラスに追加します。

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

次に、あなたのCastleWindsorValidatorFactory

public class CastleWindsorValidatorFactory : ValidatorFactoryBase {
    public override IValidator CreateInstance(Type validatorType) {
        return ResolveType.Of(validatorType) as IValidator;
    }
}
于 2010-05-13T16:30:30.537 に答える