Проверка плавучести на конечной точке службы приложений

#aspnetboilerplate #fluentvalidation

Вопрос:

Я пытаюсь добавить FluentValidation в свой ABP ApplicationService , как описано в этой статье.

Я добавил пакет NuGet, а также указал зависимость от моего основного прикладного модуля:

 [DependsOn(
    typeof(MyCoreModule),
    typeof(AbpQuartzModule),
    typeof(AbpFluentValidationModule))]
public class MyApplicationModule : AbpModule
{
    // ...
}
 

Затем я создал валидатор:

 public class MyDtoValidator : AbstractValidator<MyDto>
{
    public MyDtoValidator()
    {
        RuleFor(x => x).Custom(MyCustomRule);
    }
    
    // ...
}
 

Затем в моей службе приложений у меня просто есть следующая конечная точка:

 public class MyAppService : ApplicationService
{
    // Constructor

    public void MyEndpoint(MyDto input)
    {
       // ...
    }
}
 

MyDtoValidator Конструктор никогда не вызывается. Я предполагаю, что для служб приложений необходимо вручную вызвать валидатора.

Комментарии:

1. Насколько я пробовал и знаю, вам нужно вызвать валидатор вручную. новый валидатор().Проверка(объект);

Ответ №1:

aspnetboilerplate разрешает валидаторы с помощью исходного кода проверки IOC

В исходном коде для соответствующих модульных тестов FluentValidationTestController они определили класс валидатора внутри контроллера.

Я предполагаю, что вы создали 2 отдельных класса для валидатора и контроллера, поэтому фабрика валидаторов не находит MyDtoValidator класс.

TLDR: попробуйте добавить интерфейс ITransientDependency в MyDtoValidator класс