SuperAPI AI 工具集

dotnet-source-gen-options-validation

编程与开发

查看项目

更新于 10-16 08:49

技能介绍

用途:把基于数据注解的选项验证改为编译期源生成器实现,从而支持 Native AOT 编译并消除反射验证开销。源生成在编译期完成,值验证在启动时选项首次解析时执行。

主要能力:为带 [Required]、[Range]、[RegularExpression]、[MaxLength]、[MinLength]、[Length] 等注解的选项类生成验证逻辑;通过 [OptionsValidator] 特性触发源生成;替代 ValidateDataAnnotations()。

使用方式:在 *Options.cs 或 *Settings.cs 中查找使用数据注解的选项类;若已有对应的 [OptionsValidator] partial 类则跳过。为每个选项类创建 partial 验证器类,放在与选项类相同的命名空间: [OptionsValidator] public partial class Validate{OptionsClassName} : IValidateOptions<{OptionsClassName}> { } 然后在 DI 中注册: services.AddSingleton<IValidateOptions<MyOptions>, ValidateMyOptions>(); 并移除原有的 ValidateDataAnnotations() 调用,确保引入 Microsoft.Extensions.Options 命名空间。最后用 dotnet build 验证。

构建失败常见原因:验证器类缺少 partial 关键字、使用了不支持的验证特性、缺少 Microsoft.Extensions.Options 包引用。不支持的特性会产生编译器警告。

限制:需要 .NET 8.0 或更高版本,以及 Microsoft.Extensions.Options 8.0 或更高版本;ValidateDataAnnotations() 不再需要,应移除。