public static void DoObjectLevelValidation(this object recObject, ChoRecordConfiguration configuration, IEnumerable <ChoRecordFieldConfiguration> fieldConfigurations) { if (recObject == null) { return; } if ((configuration.ObjectValidationMode & ChoObjectValidationMode.ObjectLevel) == ChoObjectValidationMode.ObjectLevel) { if (configuration.Validator == null) { if (configuration.HasConfigValidators) { IDictionary <string, Object> dict = null; if (recObject is IDictionary <string, object> ) { dict = recObject as IDictionary <string, Object>; } else { dict = new Dictionary <string, object>(); foreach (var pd in configuration.PIDict.Values) { dict.Add(pd.Name, ChoType.GetPropertyValue(recObject, pd)); } } ChoValidator.Validate(dict, configuration.ValDict); } else { if (!configuration.IsDynamicObject) { ChoValidator.Validate(recObject); } } } else { if (recObject != null && configuration.Validator(recObject)) { throw new ValidationException("Failed to validate '{0}' object. {1}".FormatString(recObject.GetType().FullName, Environment.NewLine)); } } } }