public string CheckFieldToErrors(FieldNameProvider nameProvider, FieldValueProvider valueProvider) { var fieldName = ValidateAndGetName(nameProvider); var fieldValue = ValidateAndGetValue(valueProvider); return(ValidateField(fieldName, fieldValue)); }
public void AddValidator(FieldNameProvider nameProvider, string errorHeader, ValidationAction validationAction) { var fieldName = ValidateAndGetName(nameProvider); if (_fieldValidators.All((item) => item.FieldName != fieldName)) { _fieldValidators.Add(new FieldValidator(fieldName)); } _fieldValidators.FirstOrDefault((item) => item.FieldName == fieldName)?.AddValidator(errorHeader, validationAction); }
private string ValidateAndGetName(FieldNameProvider nameProvider) { if (nameProvider == null) { throw new ArgumentNullException(nameof(nameProvider)); } var name = nameProvider.Invoke(); if (string.IsNullOrWhiteSpace(name)) { throw new BadProviderException("Provider return not valid value", nameof(nameProvider)); } return(name); }
public string CheckFieldToErrors(FieldNameProvider nameProvider, T targetModel) { if (targetModel == null) { throw new ArgumentNullException(nameof(targetModel)); } var fieldName = ValidateAndGetName(nameProvider); var targetProperty = _modelType.GetProperty(fieldName); if (targetProperty == null) { return(string.Empty); } var fieldValue = targetProperty.GetValue(targetModel); return(_fieldValidators.Any((item) => item.FieldName == fieldName) ? ValidateField(fieldName, fieldValue) : string.Empty); }
public void RemoveValidation(FieldNameProvider nameProvider) { var fieldName = ValidateAndGetName(nameProvider); _fieldValidators.Remove(_fieldValidators.FirstOrDefault((item) => item.FieldName == fieldName)); }
public void RemoveValidator(FieldNameProvider nameProvider, string errorHeder) { var fieldName = ValidateAndGetName(nameProvider); _fieldValidators.FirstOrDefault((item) => item.FieldName == fieldName)?.RemoveValidator(errorHeder); }
public FieldValidator(FieldNameProvider nameProvider) : this() { FieldName = ValidateAndGetName(nameProvider); }