Попытка заставить MicroElements.Swashbuckle.FluentValidation работать с использованием шаблона «Обработчик команд» из https://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api
Использование 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 находится в модели, а не в команде, и 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, а также использовать шаблон обработчика команд?