swagger - MicroElements.Swashbuckle.FluentValidation AddFluentValidationRules 使用命令处理程序模式
问题描述
使用 ASP .Net Core 2.2 MicroElements.Swashbuckle.FluentValidation v3.0.0-alpha.1(作为程序集而不是包参考)Swashbuckle.AspNetCore 5.0.0-rc2
我有这是 Startup.cs
return services.AddSwaggerGen(setup =>
{
setup.AddFluentValidationRules();
});
使用流利的验证
这不会将 Fluent 验证提取到请求正文对象的架构中。
public class AddModelsCommandValidator : AbstractValidator<AddModelsCommand>
{
public AddModelsCommandValidator()
{
//1. validate request
RuleFor(e => e.Model).InvalidRequestValidation();
When(x => x.Model != null, () =>
{
//2. validate request body
RuleFor(e => e.Model.ModelCode).StringRequiredValidation();
RuleFor(e => e.Model.ModelCode).StringMaxLengthValidation(5);
RuleFor(e => e.Model.ProgramName).StringRequiredValidation();
RuleFor(e => e.Model.ProgramName).StringMaxLengthValidation(50);
});
}
}
public class AddModelsCommand : IRequest<AddModelsCommandResult>
{
public Model Model { get; }
public AddModelsCommand(Model model)
{
Model = model;
}
}
public class Model
{
/// <summary>
/// Unique code of the Model
/// </summary>
public string ModelCode { get; set; }
/// <summary>
/// The name of the Program
/// </summary>
public string ProgramName { get; set; }
}
以下代码确实将 Fluent 验证提取到请求正文对象的架构中。(因为 1. AbstractValidator 在 Model 而不是 Command 上,以及 2. 我已经删除了条件 When() 验证)
public class AddModelsCommandValidator : AbstractValidator<Model>
{
public AddModelsCommandValidator()
{
//2. validate request body
RuleFor(e => e.ModelCode).StringRequiredValidation();
RuleFor(e => e.ModelCode).StringMaxLengthValidation(5);
RuleFor(e => e.ProgramName).StringRequiredValidation();
RuleFor(e => e.ProgramName).StringMaxLengthValidation(50);
}
}
有没有办法调用 AddFluentValidationRules 并使用命令处理程序模式?
解决方案
这里的问题是AbstractValidator<Model>
必须使用..
AbstractValidator<Command
> 真的没有意义
推荐阅读
- node.js - 获取特定消息获取返回未定义的特定反应
- azure - Azure DevOps 管道 - 获取上一阶段的内部版本号
- ios - Crash number of items in section 0 when there are only 0 sections in the collection view
- html - wp_mail sending only plain text messages
- html - Is there a way to make a background for my
attribute so that I can see the text clearer?
- c# - 从 JSON 中提取某些数据而不创建类
- java - 使用 FasterXML 解析 Json 以获取通用元素
- python - 根据python中的正则表达式匹配提取字符串之前和之后的字符串
- c# - 如何从 .NET Framework 4.6 迁移到 .NET Core 3.1
- powershell - 数组中数组的迭代导致完全限定错误Id:NullArray