Skip to content

Commit

Permalink
Add a factory method for creating the CompositeValidatorSelector (#1988)
Browse files Browse the repository at this point in the history
  • Loading branch information
JeremySkinner committed Aug 8, 2022
1 parent 41ca856 commit f8003f1
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 2 deletions.
1 change: 1 addition & 0 deletions Changelog.txt
@@ -1,5 +1,6 @@
11.2.0 - 8 August 2022
Resolve issue with unexpected results when with nested Include calls with the MemberNameValidatorSelector (#1989)
Add a new Selector Factory for the Composite Selector (#1988)

11.1.1 - 6 August 2022
Fix issue with incorrect rulesets being executed in a child validator when combined with ChildRules (#1981)
Expand Down
2 changes: 1 addition & 1 deletion src/FluentValidation/Internal/ValidationStrategy.cs
Expand Up @@ -141,7 +141,7 @@ public class ValidationStrategy<T> {
selectors.Add(ValidatorOptions.Global.ValidatorSelectors.RulesetValidatorSelectorFactory(_ruleSets.ToArray()));
}

selector = selectors.Count == 1 ? selectors[0] : new CompositeValidatorSelector(selectors);
selector = selectors.Count == 1 ? selectors[0] : ValidatorOptions.Global.ValidatorSelectors.CompositeValidatorSelectorFactory(selectors);
}
else {
selector = ValidatorOptions.Global.ValidatorSelectors.DefaultValidatorSelectorFactory();
Expand Down
11 changes: 10 additions & 1 deletion src/FluentValidation/ValidatorOptions.cs
Expand Up @@ -233,13 +233,14 @@ public class ValidatorSelectorOptions {
private Func<IValidatorSelector> _defaultValidatorSelector = () => DefaultSelector;
private Func<IEnumerable<string>, IValidatorSelector> _memberNameValidatorSelector = properties => new MemberNameValidatorSelector(properties);
private Func<IEnumerable<string>, IValidatorSelector> _rulesetValidatorSelector = ruleSets => new RulesetValidatorSelector(ruleSets);
private Func<IEnumerable<IValidatorSelector>, IValidatorSelector> _compositeValidatorSelectorFactory = selectors => new CompositeValidatorSelector(selectors);

/// <summary>
/// Factory func for creating the default validator selector
/// </summary>
public Func<IValidatorSelector> DefaultValidatorSelectorFactory {
get => _defaultValidatorSelector;
set => _defaultValidatorSelector = value ?? (() => new DefaultValidatorSelector());
set => _defaultValidatorSelector = value ?? (() => DefaultSelector);
}

/// <summary>
Expand All @@ -257,4 +258,12 @@ public class ValidatorSelectorOptions {
get => _rulesetValidatorSelector;
set => _rulesetValidatorSelector = value ?? (ruleSets => new RulesetValidatorSelector(ruleSets));
}

/// <summary>
/// Factory func for creating the composite validator selector
/// </summary>
public Func<IEnumerable<IValidatorSelector>, IValidatorSelector> CompositeValidatorSelectorFactory {
get => _compositeValidatorSelectorFactory;
set => _compositeValidatorSelectorFactory = value ?? (selectors => new CompositeValidatorSelector(selectors));
}
}

0 comments on commit f8003f1

Please sign in to comment.