Fluent Validation - Как обеспечить, чтобы счетчик коллекции был больше нуля, если не ноль, но может быть нулем - PullRequest
1 голос
/ 22 апреля 2020

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

// Valid
{
    "codes": null
}

// Invalid
{
    "codes": []
}

// Valid
{
    "codes": ["Pass"]
}

Я играл и не могу найти ничего, что работает:

public class UpdateCodesRequest
{
    public IEnumerable<string> Codes { get; set; } 
}

public class UpdateCodesRequestValidator : AbstractValidator<UpdateCodesRequest>
{
    public UpdateCodesRequestValidator()
    {
        // none of these will work if Codes is null
        RuleFor(x => x.Codes.Count()).GreaterThan(0).When(x => x != null);
        RuleFor(x => x.Codes).Must(x => x.Any()).When(x => x != null);
        RuleFor(x => x.Codes).Must(x => x != null && x.Any()).When(x => x != null);
    }
}

1 Ответ

4 голосов
/ 22 апреля 2020

Как насчет этого?

RuleFor(x => x.Codes).Must(x => x == null || x.Any());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...