You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从多个程序集中注册FluentValidation验证器

配置FluentValidation加载多程序集验证器

要加载分布在多个程序集(包括共享类库)中的FluentValidation验证器,你可以通过以下两种常用方式修改配置:

方法一:多次调用AddValidatorsFromAssemblyContaining

针对每个包含验证器的程序集,指定该程序集中的任意一个验证器类型(或其他类型),FluentValidation会自动扫描并注册整个程序集内所有继承AbstractValidator<T>的验证器。

修改后的Startup.cs配置示例:

// 注册当前Web项目程序集内的验证器
services.AddValidatorsFromAssemblyContaining<Startup>();
// 注册共享类库程序集内的验证器(指定该类库中的任意一个验证器类型)
services.AddValidatorsFromAssemblyContaining<TestModelValidator>();
// 若还有其他程序集,继续添加对应的调用
// services.AddValidatorsFromAssemblyContaining<AnotherValidatorFromOtherLib>();

services.AddFluentValidationAutoValidation();
services.AddFluentValidationClientsideAdapters();

注:TestModelValidator是共享类库中的验证器类,确保你的Web项目已正确引用该共享类库。

方法二:使用AddValidatorsFromAssemblies批量注册

如果需要注册的程序集数量较多,或者不想指定具体类型,可以先获取目标程序集的实例,再批量传入注册方法。

示例代码:

// 获取当前Web项目的程序集
var webAssembly = Assembly.GetExecutingAssembly();
// 获取共享类库的程序集(可通过类型或程序集名称加载)
var sharedAssembly = typeof(TestModelValidator).Assembly;
// 若有其他程序集,继续添加到集合中
var targetAssemblies = new[] { webAssembly, sharedAssembly };

// 批量注册多个程序集的验证器
services.AddValidatorsFromAssemblies(targetAssemblies);

services.AddFluentValidationAutoValidation();
services.AddFluentValidationClientsideAdapters();

注意事项

  • 所有验证器类必须是公共类(public),且继承自AbstractValidator<T>,FluentValidation才能扫描到它们。
  • 确保Web项目已正确引用包含验证器的所有类库,避免程序集加载失败。
  • 若使用.NET 6+的顶级语句(无Startup类),只需将上述代码迁移到Program.cs的builder.Services配置块中即可。

内容的提问来源于stack exchange,提问作者user3552264

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 02:29:57