【问题标题】:Wiring up fluentvalidation with Nancy and Ninject使用 Nancy 和 Ninject 连接 fluentvalidation
【发布时间】:2015-01-10 11:54:43
【问题描述】:

我将 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)); 

【问题讨论】:

    标签: c# .net ninject nancy fluentvalidation


    【解决方案1】:

    Nancy 从 v0.12 开始自动连接 IModelValidatorFactory(请参阅此处 Configure NancyFx with Fluent Validation) - 您只需连接您的验证器。

    这适用于南希 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());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      相关资源
      最近更新 更多