private FieldValidatorCreator( PipeValidator <TModel> pipe, params Func <TModel, bool>[] ifConditions) { _pipe = pipe; _current = new ValidatorStruture <TField>(); _ifConditions = ifConditions; }
public IPipeValidator <TModel> Add() { if (_queue != null && _current.StructureType != ValidatorStrutureType.Default) { _queue.Add(_current); _current = new ValidatorStruture <TField>(); } _pipe.AddFieldValidator(this); return(_pipe); }
private async Task <ValidateResult> InvokeValidationForCurrent( TField field, ValidatorStruture <TField> current, string index) { var path = _path + index; switch (current.StructureType) { case ValidatorStrutureType.Func: if (!_current.Must(field)) { return(ValidateResult.DefaultFailed .SetErrorMessage(current.Message) .SetPath(path)); } return(ValidateResult.DefaultValid); case ValidatorStrutureType.FuncAsync: if (!await _current.MustAsync(field)) { return(ValidateResult.DefaultFailed .SetErrorMessage(current.Message) .SetPath(path)); } return(ValidateResult.DefaultValid); case ValidatorStrutureType.Validator: var result = current.Validator.Validate(field); if (result.IsFailed) { result.SetPath(path); } return(result); case ValidatorStrutureType.ValidatorAsync: var asyncResult = await current.ValidatorAsync.ValidateAsync(field); if (asyncResult.IsFailed) { asyncResult.SetPath(path); } return(asyncResult); default: return(ValidateResult.DefaultValid); } }
private async Task <ValidateResult> InvokeValidationForField( TField field, ValidatorStruture <TField> current, int?index = null) { var indexstr = index == null ? string.Empty : $"[{index}]"; if (_queue != null && _queue.Count > 0) { return(await InvokeValidationForQueue(field, indexstr)); } else { return(await InvokeValidationForCurrent(field, current, indexstr)); } }
public IValidatorCreator <TModel, TField> Must(Func <TField, Task <bool> > must) { CheckQueueAndCurrentValidator(); _current = new ValidatorStruture <TField>(must); return(this); }
public IFieldValidatorCreator <TModel, TField> Set(IValidatorAsync <TField> validatorAsync) { CheckQueueAndCurrentValidator(); _current = new ValidatorStruture <TField>(validatorAsync); return(this); }