Exemple #1
0
        /// <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);
        }