Я пытаюсь выполнить некоторые проверки, которые зависят от значения времени выполнения, и его также необходимо распространить на дочерние валидаторы, но я получаю:
System.InvalidOperationException: ' Вложенные валидаторы могут использоваться только с выражениями-членами. '
Я реализовал это с помощью модели валидации, которая содержит это значение и фактический объект, который я хочу проверить. Вот что я делаю:
public class ParentValidator : AbstractValidator<ValidationModel<ParentType>>
{
public MyValidator(IValidator<ValidationModel<ChildType>> childValidator)
{
// Some validation rules here on the actual object's properties
RuleFor(model => new ValidationModel<ChildType>
{
Value = model.Value,
ActualObject = model.ActualObject.ChildProperty
})
.SetValidator(childValidator)
.WithName(nameof(ParentType.ChildProperty));
}
}
Когда я пытаюсь использовать валидатор с чем-то вроде
parentValidator.Validate(new ValidationModel<ParentType>
{
Value = "some value",
ActualObject = parentObject
});
, я получаю указанное выше исключение. Интересно, могу ли я что-нибудь сделать, не ломая так много, если это вообще возможно. Также обратите внимание, что это проект, нацеленный на .Net 3.5
, и я использую FluentValidation.Net35
версию 1.0.1
.
Заранее спасибо, Дэвид.