/// <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;
 }
 private IValidatorBuilder CloneWithBuildHandler(ValidatorBuildHandler buildHandler, ValidatorDisposeHandler disposeHandler)
 {
     return(new ValidatorBuilder(_serviceProvider, _validationAttributeAdapter, buildHandler, disposeHandler));
 }