/// <summary> /// Called just before any validation is caused. /// </summary> /// <param name="instance"> /// The instance that is about to be validated. /// </param> /// <param name="previousFieldValidationResults"> /// The previous field validation results. /// </param> /// <param name="previousBusinessRuleValidationResults"> /// The previous business rule validation results. /// </param> /// <exception cref="ArgumentNullException"> /// The <paramref name="instance"/> is <c>null</c>. /// </exception> /// <exception cref="ArgumentNullException"> /// The <paramref name="previousFieldValidationResults"/> is <c>null</c>. /// </exception> /// <exception cref="ArgumentNullException"> /// The <paramref name="previousBusinessRuleValidationResults"/> is <c>null</c>. /// </exception> public void BeforeValidation(object instance, List <IFieldValidationResult> previousFieldValidationResults, List <IBusinessRuleValidationResult> previousBusinessRuleValidationResults) { _synchronizationContext.Acquire(); try { foreach (IValidator validator in _validators) { validator.BeforeValidation(instance, previousFieldValidationResults, previousBusinessRuleValidationResults); } } catch (Exception) { _synchronizationContext.Release(); throw; } }