/// <summary>
        /// Defines that a validation aggregator is used.
        /// </summary>
        /// <typeparam name="TQuestion">The type of the question.</typeparam>
        /// <typeparam name="TParameter">The type of the parameter.</typeparam>
        /// <param name="syntax">The syntax.</param>
        /// <returns>Expression syntax</returns>
        public static IConstraintSyntax <TQuestion, IValidationResult, TParameter, IValidationResult> AggregateWithValidationAggregator <TQuestion, TParameter>(
            this IAggregatorSyntax <TQuestion, IValidationResult, TParameter, IValidationResult> syntax)
            where TQuestion : IQuestion <IValidationResult, TParameter>
        {
            Guard.AgainstNullArgument("syntax", syntax);

            return(syntax.AggregateWith(new ValidationAggregator <TParameter>()));
        }
        /// <summary>
        /// Defines that a single expression aggregator is used. Therefore only one single expression may take part in the answer finding.
        /// </summary>
        /// <typeparam name="TQuestion">The type of the question.</typeparam>
        /// <typeparam name="TAnswer">The type of the answer.</typeparam>
        /// <typeparam name="TParameter">The type of the parameter.</typeparam>
        /// <param name="syntax">The syntax.</param>
        /// <returns>Expression syntax.</returns>
        public static IConstraintSyntax <TQuestion, TAnswer, TParameter, TAnswer> AggregateWithSingleExpressionAggregator <TQuestion, TAnswer, TParameter>(
            this IAggregatorSyntax <TQuestion, TAnswer, TParameter, TAnswer> syntax)
            where TQuestion : IQuestion <TAnswer, TParameter>
        {
            Guard.AgainstNullArgument("syntax", syntax);

            return(syntax.AggregateWith(new Aggregators.SingleExpressionAggregator <TAnswer, TParameter>()));
        }
        /// <summary>
        /// Defines that an expression aggregator is used to aggregate expressions.
        /// </summary>
        /// <typeparam name="TQuestion">The type of the question.</typeparam>
        /// <typeparam name="TAnswer">The type of the answer.</typeparam>
        /// <typeparam name="TParameter">The type of the parameter.</typeparam>
        /// <typeparam name="TExpressionResult">The type of the expression result.</typeparam>
        /// <param name="syntax">The syntax.</param>
        /// <param name="seed">The seed used in the aggregation.</param>
        /// <param name="aggregateFunc">The aggregate function.</param>
        /// <returns>Expression syntax.</returns>
        public static IConstraintSyntax <TQuestion, TAnswer, TParameter, TExpressionResult> AggregateWithExpressionAggregator <TQuestion, TAnswer, TParameter, TExpressionResult>(
            this IAggregatorSyntax <TQuestion, TAnswer, TParameter, TExpressionResult> syntax, TAnswer seed, Expression <Func <TAnswer, TExpressionResult, TAnswer> > aggregateFunc)
            where TQuestion : IQuestion <TAnswer, TParameter>
        {
            Guard.AgainstNullArgument("syntax", syntax);

            return(syntax.AggregateWith(new Aggregators.ExpressionAggregator <TExpressionResult, TAnswer, TParameter>(seed, aggregateFunc)));
        }
Esempio n. 4
0
        /// <summary>
        /// Defines that a validation aggregator is used.
        /// </summary>
        /// <typeparam name="TQuestion">The type of the question.</typeparam>
        /// <typeparam name="TParameter">The type of the parameter.</typeparam>
        /// <param name="syntax">The syntax.</param>
        /// <returns>Expression syntax</returns>
        public static IConstraintSyntax <TQuestion, IValidationResult, TParameter, IValidationResult> AggregateWithValidationAggregator <TQuestion, TParameter>(
            this IAggregatorSyntax <TQuestion, IValidationResult, TParameter, IValidationResult> syntax)
            where TQuestion : IQuestion <IValidationResult, TParameter>
        {
            Ensure.ArgumentNotNull(syntax, "syntax");

            return(syntax.AggregateWith(new ValidationAggregator <TParameter>()));
        }
Esempio n. 5
0
        /// <summary>
        /// Defines that a single expression aggregator is used. Therefore only one single expression may take part in the answer finding.
        /// </summary>
        /// <typeparam name="TQuestion">The type of the question.</typeparam>
        /// <typeparam name="TAnswer">The type of the answer.</typeparam>
        /// <typeparam name="TParameter">The type of the parameter.</typeparam>
        /// <param name="syntax">The syntax.</param>
        /// <returns>Expression syntax.</returns>
        public static IConstraintSyntax <TQuestion, TAnswer, TParameter, TAnswer> AggregateWithSingleExpressionAggregator <TQuestion, TAnswer, TParameter>(
            this IAggregatorSyntax <TQuestion, TAnswer, TParameter, TAnswer> syntax)
            where TQuestion : IQuestion <TAnswer, TParameter>
        {
            Ensure.ArgumentNotNull(syntax, "syntax");

            return(syntax.AggregateWith(new Aggregators.SingleExpressionAggregator <TAnswer, TParameter>()));
        }
Esempio n. 6
0
 /// <summary>
 /// Defines that a validation aggregator is used.
 /// </summary>
 /// <typeparam name="TQuestion">The type of the question.</typeparam>
 /// <typeparam name="TValidationResult">The type of the validation result.</typeparam>
 /// <typeparam name="TValidationViolation">The type of the validation violation.</typeparam>
 /// <typeparam name="TParameter">The type of the parameter.</typeparam>
 /// <param name="syntax">The syntax.</param>
 /// <param name="validationResultFactory">The validation result factory.</param>
 /// <returns>Expression syntax</returns>
 public static IConstraintSyntax <TQuestion, TValidationResult, TParameter, TValidationResult> AggregateWithValidationAggregator <TQuestion, TValidationResult, TValidationViolation, TParameter>(
     this IAggregatorSyntax <TQuestion, TValidationResult, TParameter, TValidationResult> syntax,
     IValidationResultFactory <TValidationResult, TValidationViolation> validationResultFactory)
     where TQuestion : IQuestion <TValidationResult, TParameter>
     where TValidationResult : class, IValidationResult <TValidationViolation>
     where TValidationViolation : IValidationViolation
 {
     return(syntax.AggregateWith(new ValidationAggregator <TValidationResult, TValidationViolation, TParameter>(validationResultFactory)));
 }