/// <summary> /// Validates the specified instance and allows the manipulation of the whole validation context. /// <para /> /// This method can be used to manipulate the whole validation context and the implementation of this is enough. /// </summary> /// <param name="instance">The instance to validate.</param> /// <param name="validationContext">The validation context.</param> /// <exception cref="ArgumentNullException">The <paramref name="instance"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="validationContext"/> is <c>null</c>.</exception> public void Validate(object instance, ValidationContext validationContext) { try { foreach (IValidator validator in _validators) { validator.Validate(instance, validationContext); } } catch (Exception) { _synchronizationContext.Release(); throw; } }
/// <summary> /// Called when the policy is resetting. /// </summary> protected override void OnReset() { try { foreach (var expirationPolicy in _expirationPolicies.Where(expirationPolicy => expirationPolicy.CanReset)) { expirationPolicy.Reset(); } } finally { if (IsResting) { _synchronizationContext.Release(); } } }