/// <summary> /// Checks all validation properties and throws an exception /// if there is a problem /// </summary> internal virtual void EnforceRequiredFields() { PropertyInfo[] properties = this.GetType() .GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); foreach (PropertyInfo property in properties) { object[] validationAttributes = property.GetCustomAttributes(typeof(ValidationAttribute), false); if (validationAttributes != null) { for (int i = 0; i < validationAttributes.GetLength(0); i++) { ValidationAttribute rule = validationAttributes[i] as ValidationAttribute; // Rule throws an exception if not valid rule.EnforceValid(property.GetValue(this, null), property.Name); } } } }