C# FluentValidation:如何从另一个程序集自动注册所有验证程序?

C# FluentValidation:如何从另一个程序集自动注册所有验证程序?,c#,.net-core,startup,registration,fluentvalidation,C#,.net Core,Startup,Registration,Fluentvalidation,我正在为一个.Net核心项目使用“FluentValidation.AspNetCore”库(Version=“8.6.2”) 我想做的是在Startup.cs类中自动注册我的所有验证器,使用类似的东西(这就是我现在使用的): services.AddControllers().AddFluentValidation(fv=>fv.RegisterValidatorsFromAssemblyContaining()); 但问题是,我的验证器将被移动到另一个程序集(客户机需要),所以我不能使用S

我正在为一个.Net核心项目使用“FluentValidation.AspNetCore”库(Version=“8.6.2”)

我想做的是在Startup.cs类中自动注册我的所有验证器,使用类似的东西(这就是我现在使用的):

services.AddControllers().AddFluentValidation(fv=>fv.RegisterValidatorsFromAssemblyContaining());
但问题是,我的验证器将被移动到另一个程序集(客户机需要),所以我不能使用Startup作为注册的参考

有没有一种方法可以做到这一点,而不必逐个注册验证器

注册验证器有三种方法

  • 使用AddTransient注册服务中的每个验证器
  • 使用“RegisterValidatorsFromAssemblyContaining”方法注册将注册所有 从程序集中的AbstractValidator类派生的验证器 包含指定类型的
  • 使用“RegisterValidatorsFromAssembly”方法注册
  • 来源

    如果使用选项2并将代码中的
    Startup
    替换为从另一个程序集中派生的
    AbstractValidator
    的任何类,它将注册该程序集中的所有验证器

    例如:

    services.AddControllers().AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<AnotherValidationClass>());
    
    services.AddControllers().AddFluentValidation(fv=>fv.RegisterValidatorsFromAssemblyContaining());
    
    谢谢!我在作为参考实现的验证器上留下了一个。
    services.AddControllers().AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<AnotherValidationClass>());