与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));
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());
}
}