#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
класс