private void CheckRules <TDefinition> (IEnumerable <IValidationRule <TDefinition> > rules, TDefinition definition) where TDefinition : IVisitableDefinition { _validationLog.ValidationStartsFor(definition); foreach (IValidationRule <TDefinition> rule in rules) { try { rule.Execute(this, definition, _validationLog); } catch (Exception ex) { _validationLog.UnexpectedException(rule, ex); } } _validationLog.ValidationEndsFor(definition); }