/// <summary> /// Add a new rule to the validator /// </summary> /// <typeparam name="TProp">The property to check</typeparam> /// <param name="expression">The property to check</param> /// <param name="condition">The condition to check</param> /// <param name="extensions">The additional properties of the rule</param> /// <returns>The validator</returns> public Validator <T> AddRule <TProp>(Expression <Func <T, TProp> > expression, Func <ValidationConditionBuilder <T, TProp>, IValidationCondition <T> > condition, params Expression <Action <IValidationRule <T> > >[] extensions) { var rule = new ValidationRule <T, TProp>(expression); var builder = new ValidationConditionBuilder <T, TProp>(expression, rule); var validation = condition(builder); rule.AddCondition(validation); AddRule(rule); foreach (var extension in extensions) { extension.Compile().Invoke(rule); } return(this); }