C# 使用Castle.Windsor设置FluentValidation时出现的问题

C# 使用Castle.Windsor设置FluentValidation时出现的问题,c#,asp.net-mvc,castle-windsor,fluentvalidation,C#,Asp.net Mvc,Castle Windsor,Fluentvalidation,我有一个asp.net MVC 4.5应用程序,Castle.Windsor 3.2.2作为DI,我第一次尝试添加FluentValidation版本5.0.0.1 我创建了从ValidatorFactoryBase继承的工厂 public class WindsorFluentValidatorFactory : ValidatorFactoryBase { private readonly IKernel _kernel; public WindsorFluentValid

我有一个asp.net MVC 4.5应用程序,Castle.Windsor 3.2.2作为DI,我第一次尝试添加FluentValidation版本5.0.0.1

我创建了从ValidatorFactoryBase继承的工厂

public class WindsorFluentValidatorFactory : ValidatorFactoryBase
{
    private readonly IKernel _kernel;

    public WindsorFluentValidatorFactory(IKernel kernel)
    {
        _kernel = kernel;
    }

    public override IValidator CreateInstance(Type validatorType)
    {
        return _kernel.HasComponent(validatorType)
                     ? _kernel.Resolve<IValidator>(validatorType)
                     : null;
    }
}
但是,第二行给出了以下错误:

“匹配的最佳重载方法” 'System.Collections.ObjectModel.Collection.Add(System.Web.Mvc.ModelValidatorProvider)' 具有一些无效参数参数1:无法从转换 'FluentValidation.Mvc.WebApi.FluentValidationModelValidatorProvider' 至“System.Web.Mvc.ModelValidatorProvider”

因此,这种方式似乎不适用于我使用的版本

我还尝试使用Configure方法对此进行挂钩:

FluentValidationModelValidatorProvider.Configure(x => x.ValidatorFactory = new WindsorFluentValidatorFactory(container.Kernel));
但是,它不起作用。调试我在ModelValidatorProviders.Providers上进行了检查,并且没有使用Configure方法添加新的提供程序

你知道我可能做错了什么吗? 谢谢

安德烈斯


解决 我在另一个论坛上得到了一个解决方案,但我会发布答案,这对其他人很有用。 我使用了错误的提供者 有两个提供程序—一个用于MVC,另一个用于WebApi。看起来我使用的是WebAPI


将其更改为FluentValidation.Mvc.FluentValidationModelValidatorProvide,问题已解决

请将您的解决方案作为答案发布,它也解决了我的问题
var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new WindsorFluentValidatorFactory(container.Kernel));
ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);
FluentValidationModelValidatorProvider.Configure(x => x.ValidatorFactory = new WindsorFluentValidatorFactory(container.Kernel));