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 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)); } }