/// <summary>
        /// Validate the set of rules against the object/value.
        /// </summary>
        /// <param name="arg">
        /// The object/value being checked.
        /// </param>
        /// <returns>
        /// Queue of rule violations found.
        /// </returns>
        /// <example>
        /// Example of using the RuleCheckingService
        ///     <code title="C#" lang="C#" removeRegionMarkers="true">
        /// <code source="..\Examples\RuleCheckingServiceExample.cs" region="VerifyRules_CreateRules">
        /// </code>
        /// <code source="..\Examples\RuleCheckingServiceExample.cs" region="VerifyRules_InstantiateService">
        /// </code>
        /// <code source="..\Examples\RuleCheckingServiceExample.cs" region="VerifyRules_Validate">
        /// </code>
        /// <code source="..\Examples\RuleCheckingServiceExample.cs" region="VerifyRules_CheckErrorsAndReport">
        /// </code>
        /// </code>
        /// </example>
        public ValidationErrorStorage Validate(TEntity arg)
        {
            var queue = new ValidationErrorStorage();

            foreach (var result in this._checks.Select(checkRule => checkRule(arg)))
            {
                queue.AddAViolation(result);

                if (result.Severity == RuleResultSeverity.Fatal)
                {
                    return(queue);
                }
            }

            return(queue);
        }
示例#2
0
        /// <summary>
        /// Adds two queues together.
        /// </summary>
        /// <param name="left">Left side parameter.</param>
        /// <param name="right">Right side parameter.</param>
        /// <returns>Joined queue.</returns>
        /// <example> Example of using the adding 2 queues
        ///     <code title="C#" lang="C#" removeRegionMarkers="true">
        ///         <code source="..\Examples\RuleCheckingServiceExample.cs" region="QueueAddition_CreateRule" />
        ///         <code source="..\Examples\RuleCheckingServiceExample.cs" region="QueueAddition_InstantiateService" />
        ///         <code source="..\Examples\RuleCheckingServiceExample.cs" region="QueueAddition_Validate" />
        ///         <code source="..\Examples\RuleCheckingServiceExample.cs" region="QueueAddition_CheckErrorsAndReport" />
        ///     </code>
        /// </example>
        public static ValidationErrorStorage operator +(ValidationErrorStorage left, ValidationErrorStorage right)
        {
            var newQueue = new ValidationErrorStorage();

            foreach (var ruleViolation in left._violations)
            {
                newQueue.AddAViolation(ruleViolation);
            }

            foreach (var ruleViolation in right._violations)
            {
                newQueue.AddAViolation(ruleViolation);
            }

            return(newQueue);
        }