Чтение из конфигурации в Fluid Validators - PullRequest
0 голосов
/ 22 января 2019

Я проверяю свою модель с помощью Fluent Validation 8.

Я хочу иметь возможность читать из моего appsettings.json в моем классе Validator, но Конфигурация не вводится.

Вот мой валидатор:

 public class CreateOperationRequestValidator: AbstractValidator<OperationInputModel>
{
    private IConfiguration Configuration { get; set; }
    public CreateOperationRequestValidator(IConfiguration configuration)
    {


        CascadeMode = CascadeMode.StopOnFirstFailure;

        RuleFor(m => m.mode).NotEmpty().IsInEnum();
            ;

    }

Но моя конфигурация пуста.

Мой запуск:

 services.AddSingleton<IConfiguration>(Configuration);

        services.AddMvc(opt =>
        {
            opt.Filters.Add(typeof(ValidatorActionFilter));
        }).AddFluentValidation(
            fvc => fvc.RegisterValidatorsFromAssemblyContaining<Startup>()
        );

1 Ответ

0 голосов
/ 22 января 2019

Для того, чтобы классы были введены, эти классы сами должны быть зарегистрированы в коллекции сервисов. Весьма вероятно, что Fluent Validation не делает это, и в результате вы ничего не можете сделать. Другими словами, вы зависите от самой библиотеки и от того, как она обрабатывает создание экземпляров объекта и время жизни внутри.

Стоит также упомянуть, что атрибуты не могут быть внедрены, потому что они по существу созданы на месте. Это ограничение атрибутов в целом, а не только Microsoft.Extensions.DependencyInjection. Я не уверен, используете ли вы фильтры в качестве атрибутов или нет, но весьма вероятно, что Fluent Validation здесь не поддерживает инъекцию, просто потому, что она не будет согласованной в зависимости от варианта использования.

...