Я использую FluentValidation , и я создал обобщенный класс c, например, так:
public class GenericValidator<T>: AbstractValidator<T>
{
protected override bool PreValidate(ValidationContext<T> context, ValidationResult result)
{
if (context.InstanceToValidate != null) return true;
result.Errors.Add(new ValidationFailure("model", Resources.NullModelError));
return false;
}
}
Когда я пытался использовать свое приложение, оно вернуло эту ошибку:
System.InvalidOperationException: невозможно разрешить службу для типа 'Api.Controllers.Strategies.StrategyValidator' при попытке активировать 'Api.Controllers.Strategies.Handlers.StrategySaveHandler'.
Мой StrategyValidator
выглядит следующим образом:
public class StrategyValidator : GenericValidator<StrategyViewModel>
{
public StrategyValidator()
{
RuleFor(model => model.Url).NotEmpty();
}
}
У меня есть несколько таких для разных сущностей, и я хотел бы зарегистрировать их все. Я пробовал несколько способов:
services.AddSingleton(typeof(GenericValidator<>));
services.AddSingleton(typeof(GenericValidator<>), typeof(GenericValidator<>));
services.AddSingleton(typeof(AbstractValidator<>));
services.AddSingleton(typeof(GenericValidator<>), typeof(AbstractValidator<>));
Ни один из них не работал. Кто-нибудь знает, что я могу сделать, чтобы зарегистрировать все мои валидаторы, а не регистрировать их один за другим?