C# 使用Castle.Windsor设置FluentValidation时出现的问题
我有一个asp.net MVC 4.5应用程序,Castle.Windsor 3.2.2作为DI,我第一次尝试添加FluentValidation版本5.0.0.1 我创建了从ValidatorFactoryBase继承的工厂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
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));