public void Invoke(object value, IValidationReport report, ValidationReportDepth depth) { //If validating an Expression that has already failed a rule, then skip. if (depth == ValidationReportDepth.FieldShortCircuit && report.HasError(value, _originatingExpression)) { return; } var originatingValue = (T)value; R valueToValidate; if (!_valueToValidate.TryGetValue(originatingValue, out valueToValidate)) { return; } var result = _rule.Validate(valueToValidate); if (!result.IsValid) { var culpritResults = _culpritResolver.Resolve(originatingValue); foreach (var culpritResult in culpritResults) { report.AddError(new ValidationError(_rule, culpritResult.Expression, result.Arguments, culpritResult.Value, originatingValue, _originatingExpression)); } } }
public void Invoke(object value, IValidationReport report, ValidationReportDepth depth) { if (depth == ValidationReportDepth.FieldShortCircuit && report.HasError(value, _expression)) { return; } R objToValidate = _compiledExpression.Invoke((T)value); if (objToValidate != null) { _rulesEngine.Validate(objToValidate, report, depth); } }
public void Invoke(object value, IValidationReport report, ValidationReportDepth depth) { //If validating an Expression that has already failed a rule, then skip. if (depth == ValidationReportDepth.FieldShortCircuit && report.HasError(_expressionToBlame, value)) { return; } var result = _rule.Validate(_compiledExpression.Invoke((T)value)); if (!result.IsValid) { report.AddError(new ValidationError(_rule, _expressionToBlame, result.Arguments, value)); } }
public void Invoke(object value, IValidationReport report, ValidationReportDepth depth) { if (depth == ValidationReportDepth.FieldShortCircuit && report.HasError(_enumerableCompositionExpression, value)) { return; } IEnumerable enumerableToValidate = _compiledExpression.Invoke((T)value); if (enumerableToValidate != null) { foreach (object objToValidate in enumerableToValidate) { this.rulesRulesEngine.Validate(objToValidate, report, depth); if (report.HasErrors && (depth == ValidationReportDepth.ShortCircuit)) { return; } } } }