/// <inheritdoc/> public GetValueToBeValidatedResponse GetValueToBeValidated(IManifestValue manifestValue, object parentValue, ResolvedValidationOptions validationOptions) { if (parentValue is null) { return(IgnoredGetValueToBeValidatedResponse.Default); } try { var valueToBeValidated = manifestValue.AccessorFromParent(parentValue); return(new SuccessfulGetValueToBeValidatedResponse(valueToBeValidated)); } catch (Exception e) { var behaviour = behaviourProvider.GetBehaviour(manifestValue, validationOptions); if (behaviour == ValueAccessExceptionBehaviour.Throw) { var message = String.Format(Resources.ExceptionMessages.GetExceptionMessage("ErrorAccessingValue"), manifestValue, parentValue); throw new ValidationException(message, e); } else if (behaviour == ValueAccessExceptionBehaviour.TreatAsError) { return(new ErrorGetValueToBeValidatedResponse(e)); } return(IgnoredGetValueToBeValidatedResponse.Default); } }
/// <inheritdoc/> public ValueAccessExceptionBehaviour GetBehaviour(IManifestValue manifestValue, ResolvedValidationOptions validationOptions) { return(manifestValue.AccessorExceptionBehaviour.HasValue ? manifestValue.AccessorExceptionBehaviour.Value : validationOptions.AccessorExceptionBehaviour); }