Problems setting up FluentValidation with Castle.Windsor

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 .

+4

Source: https://habr.com/ru/post/1530650/


All Articles