I have an asp.net MVC 4.5 application with Castle.Windsor 3.2.2 as a DI, and I'm trying to add FluentValidation version 5.0.0.1 for the first time.
I created a factory inheritance from 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;
}
}
Also created installer for Castle:
public class FluentValidatorsInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Classes
.FromThisAssembly()
.BasedOn(typeof(IValidator<>))
.WithService
.Base());
}
}
Now, in Global.asax, I tried (after the documentation on the network) to connect things like this:
var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new WindsorFluentValidatorFactory(container.Kernel));
ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);
However, the second line gives the following error:
"The best overloaded method match for 'System.Collections.ObjectModel.Collection.Add (System.Web.Mvc.ModelValidatorProvider)' has some invalid arguments. Argument 1: Cannot be converted from 'FluentValidation.Mvc.WebApi.FluentValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidationModelValidation Web.Mvc.ModelValidatorProvider '"
, , , .
, Configure:
FluentValidationModelValidatorProvider.Configure(x => x.ValidatorFactory = new WindsorFluentValidatorFactory(container.Kernel));
. ModelValidatorProviders.Providers , Configure.
, ?
,
, , - .
: MVC WebApi. , WebAPI.
FluentValidation.Mvc.FluentValidationModelValidatorProvide .