Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
        /// </summary>
        /// <param name="inferValidators">If true, the runner will try to infer the validators based on data types</param>
        /// <param name="registry">The registry.</param>
        /// <param name="contributors">The contributors.</param>
        public ValidatorRunner(bool inferValidators, IValidatorRegistry registry, IValidationContributor[] contributors)
        {
            if (registry == null)
            {
                throw new ArgumentNullException("registry");
            }

            this.inferValidators = inferValidators;

            validationPerformer = DefaultSettings.DefaultValidationPerformer;

            errorPerInstance = new Dictionary <object, ErrorSummary>();

            this.registry = registry;
            this.contributors.AddRange(contributors);

            // resolve contributor dependencies if needed
            foreach (IValidationContributor contributor in this.contributors)
            {
                IHasValidationPerformerDependency hasPerformerDependency = (contributor as IHasValidationPerformerDependency);
                if (hasPerformerDependency != null)
                {
                    hasPerformerDependency.ValidationPerformer = this.validationPerformer;
                }

                IHasValidatorRunnerDependency hasValidatorRunnerDependency = contributor as IHasValidatorRunnerDependency;
                if (hasValidatorRunnerDependency != null)
                {
                    hasValidatorRunnerDependency.ValidatorRunner = this;
                }

                IHasValidatorRegistryDependency hasValidatorRegistryDependency = (contributor as IHasValidatorRegistryDependency);
                if (hasValidatorRegistryDependency != null)
                {
                    hasValidatorRegistryDependency.ValidatorRegistry = registry;
                }
            }
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
		/// </summary>
		/// <param name="inferValidators">If true, the runner will try to infer the validators based on data types</param>
		/// <param name="registry">The registry.</param>
		/// <param name="contributors">The contributors.</param>
		public ValidatorRunner(bool inferValidators, IValidatorRegistry registry, IValidationContributor[] contributors) {
			if (registry == null) throw new ArgumentNullException("registry");

			this.inferValidators = inferValidators;

			validationPerformer = DefaultSettings.DefaultValidationPerformer;

			errorPerInstance = new Dictionary<object, ErrorSummary>();

			this.registry = registry;
			this.contributors.AddRange(contributors);

			// resolve contributor dependencies if needed
			foreach(IValidationContributor contributor in this.contributors)
			{
				IHasValidationPerformerDependency hasPerformerDependency = (contributor as IHasValidationPerformerDependency);
				if (hasPerformerDependency != null)
					hasPerformerDependency.ValidationPerformer = this.validationPerformer;
				
				IHasValidatorRunnerDependency hasValidatorRunnerDependency = contributor as IHasValidatorRunnerDependency;
				if (hasValidatorRunnerDependency != null)
					hasValidatorRunnerDependency.ValidatorRunner = this;
				
				IHasValidatorRegistryDependency hasValidatorRegistryDependency = (contributor as IHasValidatorRegistryDependency);
				if (hasValidatorRegistryDependency != null) 
					hasValidatorRegistryDependency.ValidatorRegistry = registry;
			}

		}