2

我正在努力让 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>();  
    }  
}  

我正在尝试构建 FluentValidation 工厂,如http://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-container中所述

这篇文章使用了 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 回答