/// <summary>
 /// Creates instance of <see cref="FluentValidationOperationFilter"/>.
 /// </summary>
 /// <param name="swaggerGenOptions">Swagger generation options.</param>
 /// <param name="validatorFactory">FluentValidation factory.</param>
 /// <param name="rules">Custom rules. Is not set <see cref="FluentValidationRules.CreateDefaultRules"/> will be used.</param>
 /// <param name="loggerFactory">Logger factory.</param>
 public FluentValidationOperationFilter(
     IOptions <SwaggerGenOptions> swaggerGenOptions,
     [CanBeNull] IValidatorFactory validatorFactory       = null,
     [CanBeNull] IEnumerable <FluentValidationRule> rules = null,
     [CanBeNull] ILoggerFactory loggerFactory             = null)
 {
     _swaggerGenOptions = swaggerGenOptions.Value;
     _validatorFactory  = validatorFactory;
     _logger            = loggerFactory?.CreateLogger(typeof(FluentValidationRules)) ?? NullLogger.Instance;
     _rules             = FluentValidationRules.CreateDefaultRules().OverrideRules(rules);
 }
 public FluentValidationOperationFilter(
     [CanBeNull] IValidatorFactory validatorFactory       = null,
     [CanBeNull] IEnumerable <FluentValidationRule> rules = null,
     [CanBeNull] ILoggerFactory loggerFactory             = null)
 {
     _validatorFactory = validatorFactory;
     _logger           = loggerFactory?.CreateLogger(typeof(FluentValidationRules));
     _rules            = FluentValidationRules.CreateDefaultRules();
     if (rules != null)
     {
         var ruleMap = _rules.ToDictionary(rule => rule.Name, rule => rule);
         foreach (var rule in rules)
         {
             // Add or replace rule
             ruleMap[rule.Name] = rule;
         }
         _rules = ruleMap.Values.ToList();
     }
 }