如何在ASP.NET Core中手动注册FluentValidation验证程序?

时间:2017-02-17 08:24:37

标签: c# asp.net-core fluentvalidation

我使用内置容器的ASP.NET Core。

注册应该完成like so

services
  .AddMvc()
  .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>())

这会自动1)配置FluentValidation,并且2)注册在程序集中找到的所有验证程序。

但我想手动注册我的验证器。我该怎么做?

2 个答案:

答案 0 :(得分:2)

您将要开始考虑使用ValidatorFactory。因此,与您调用添加FluentValidation不同,您的调用将如下所示:

.AddFluentValidation(fv => fv.ValidatorFactory = new MyValidatorFactory())

您需要在IOC容器中注册验证器。在自定义的ValidatorFactory实现中,您需要覆盖CreateInstance并让它使用IOC容器为您解析验证器。

https://github.com/JeremySkinner/FluentValidation/wiki/i.-IoC

答案 1 :(得分:2)

// must first setup FV
services
    .AddMvc()
    .AddFluentValidation(fv => {});

// can then manually register validators
services.AddTransient<IValidator<Foo>, FooValidator>();
services.AddTransient<IValidator<Bar>, BarValidator>();