Я пытаюсь вручную проверить модель (PageModel
), которая имеет свойство (Questions
), которое является IEnumerable полиморфных типов. Я не мог заставить это работать автоматически, поэтому я пытаюсь использовать код ниже.
public IActionResult Submit([FromServices] IValidatorFactory factory, [FromForm] PageModel model)
{
foreach ( var question in model.Questions )
{
Type questionType = question.GetType();
var validator = factory.GetValidator(question.GetType());
var results = validator.Validate(ValidationContext.CreateWithOptions(question));
results.AddToModelState(ModelState, null);
}
Однако IValidator.Validate()
не использует модель (question
), а вместо этого нуждается в ValidationContext<T>
или IValidationContext
, ни один из которых я не могу создать, не зная типа валидатора во время компиляции.
Пример ручной проверки в документах показывает, что создается конкретный валидатор, но я бы хотел, чтобы FluentValidation нашла правильный с фабрикой, а затем вызвала его.
Кто-нибудь знает как это сделать?