FluentValidation: как автоматически зарегистрировать все валидаторы из другой сборки?

Я использую библиотеку FluentValidation.AspNetCore (версия = 8.6.2) для проекта .Net Core.

Что я хотел бы сделать, так это автоматически зарегистрировать все мои валидаторы в классе Startup.cs, используя что-то вроде этого (это то, что я использую сейчас):

services.AddControllers().AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>());

Но проблема в том, что мои валидаторы будут перемещены в другую сборку (требуемую клиентом), поэтому я не могу использовать Startup в качестве ссылки для регистрации.

Есть ли способ сделать это без необходимости регистрировать валидаторы один за другим?


person letie    schedule 21.07.2020    source источник


Ответы (1)


Для регистрации Валидатора есть три способа.

  1. Регистрация каждого валидатора в Сервисе с помощью AddTransient.
  2. Регистрация с использованием метода «RegisterValidatorsFromAssemblyContaining» регистрирует все валидаторы, производные от класса AbstractValidator, в сборке, содержащей указанный тип.
  3. Регистрация методом «RegisterValidatorsFromAssembly».

источник здесь

Если вы используете вариант номер 2 и замените Startup в своем коде на любой класс, производный от AbstractValidator из другой сборки, он зарегистрирует все валидаторы из этой сборки.

Пример:

services.AddControllers().AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<AnotherValidationClass>());
person Duck Ling    schedule 21.07.2020
comment
Спасибо! Я оставил один на валидаторах, которые я реализовал в качестве эталона. - person letie; 27.07.2020