与Nancy和Ninject进行流体验证

本文关键字:体验 验证 Nancy Ninject | 更新日期: 2023-09-27 18:30:11

我使用Nancy和Ninject作为IoC。一切都很好。我现在需要添加FluentValidation。如何通过Ninject连接Nancy使用FluentValidation?

我看到有一个NuGet包Ninject.Fluent.Validation,但我找不到任何关于如何使用它的文档或示例。

NancyFx网站上的演示项目使用TinyIoC,所以对我没有用处。

更新:这就是我尝试做的:

var createRequest = this.BindAndValidate<CreateRequest>();
if (!ModelValidationResult.IsValid)
{
    return Response.AsJson(ModelValidationResult, HttpStatusCode.BadRequest);    
}

模型始终有效(即使CreateConsumerRequestValidator报告了错误)。

这是我在Ninject引导程序中添加的内容:

Bind<IModelValidatorFactory>().To<FluentValidationValidatorFactory>().InSingletonScope();
AssemblyScanner.FindValidatorsInAssemblyContaining<CreateRequestValidator>()
.ForEach(match => Bind(match.InterfaceType).To(match.ValidatorType)); 

与Nancy和Ninject进行流体验证

IModelValidatorFactory由Nancy从v0.12自动连接(请参阅此处使用Fluent Validation配置NancyFx)-您只需要连接验证器即可。

这适用于Nancy 0.23

using FluentValidation;
using Ninject.Extensions.Conventions;
using Ninject.Modules;
public class ValidatorModule : NinjectModule
{
    public override void Load()
    {
        this.Kernel.Bind(
            x =>
            x.FromAssembliesMatching("YourNameSpace.*")
             .SelectAllClasses()
             .InheritedFrom<IValidator>()
             .BindAllInterfaces());
    }
}