/// <summary>
 /// Constructs a new instance of <see cref="ValidatorBuilder"/>. This constructor is not meant to be called directly by the app developer,
 /// but rather be used by <see cref="Validator.AddSubValidator"/>
 /// </summary>
 /// <param name="serviceProvider">The service provider.</param>
 /// <param name="validationAttributeAdapter">Used when scanning properties for <see cref="ValidationAttribute"/>. If this is null, no adaptation will occur.</param>
 /// <param name="validatorBuildHandler">Called after <see cref="Build"/> is invoked.</param>
 /// <param name="validatorDisposeHandler">Called after an <see cref="IValidator"/> created by this builder is disposed.</param>
 public ValidatorBuilder(IServiceProvider serviceProvider,
                         IValidationAttributeAdapter validationAttributeAdapter,
                         ValidatorBuildHandler validatorBuildHandler,
                         ValidatorDisposeHandler validatorDisposeHandler)
 {
     _serviceProvider            = serviceProvider;
     _validationAttributeAdapter = validationAttributeAdapter;
     _validatorBuildHandler      = validatorBuildHandler;
     _validatorDisposeHandler    = validatorDisposeHandler;
 }
 /// <summary>
 /// Constructs a new instance of <see cref="ValidatorBuilder"/>.
 /// </summary>
 /// <param name="serviceProvider">The service provider.</param>
 /// <param name="validationAttributeAdapter">Used when scanning properties for <see cref="ValidationAttribute"/>. If this is null, no adaptation will occur.</param>
 public ValidatorBuilder(IServiceProvider serviceProvider,
                         IValidationAttributeAdapter validationAttributeAdapter = null) : this(serviceProvider, validationAttributeAdapter, null, null)
 {
 }