Skip to content

Commit c56ac2c

Browse files
committed
The abstract base classes Rule and Selector can be removed as well.
Signed-off-by: Dima Enns <[email protected]>
1 parent ce50472 commit c56ac2c

File tree

5 files changed

+51
-102
lines changed

5 files changed

+51
-102
lines changed

Sources/LambdaConverters.Wpf/LambdaConverters.Wpf.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@
5757
<Reference Include="WindowsBase" />
5858
</ItemGroup>
5959
<ItemGroup>
60-
<Compile Include="Rule.cs" />
61-
<Compile Include="Selector.cs" />
6260
<Compile Include="Converter.cs" />
6361
<Compile Include="RuleErrorStrategy.cs" />
6462
<Compile Include="SelectorErrorStrategy.cs" />

Sources/LambdaConverters.Wpf/Rule.cs

Lines changed: 0 additions & 49 deletions
This file was deleted.

Sources/LambdaConverters.Wpf/Selector.cs

Lines changed: 0 additions & 46 deletions
This file was deleted.

Sources/LambdaConverters.Wpf/TemplateSelector.cs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,37 @@ namespace LambdaConverters
1111
/// </summary>
1212
public static class TemplateSelector
1313
{
14-
sealed class Selector<I> : LambdaConverters.Selector
14+
sealed class Selector<I> : System.Windows.Controls.DataTemplateSelector
1515
{
1616
readonly Func<TemplateSelectorArgs<I>, DataTemplate> selectFunction;
1717

18+
SelectorErrorStrategy ErrorStrategy { get; }
19+
20+
bool IsSelectFunctionAvailable { get; }
21+
22+
[Pure]
23+
DataTemplate GetErrorValue(DataTemplate defaultValue)
24+
{
25+
switch (ErrorStrategy)
26+
{
27+
case SelectorErrorStrategy.ReturnDefaultValue:
28+
return defaultValue;
29+
30+
case SelectorErrorStrategy.ReturnNewEmptyDataTemplate:
31+
return new DataTemplate();
32+
33+
default:
34+
throw new NotSupportedException();
35+
}
36+
}
37+
1838
internal Selector(
1939
Func<TemplateSelectorArgs<I>, DataTemplate> selectFunction,
2040
SelectorErrorStrategy errorStrategy)
21-
: base(errorStrategy, default(I), typeof(I), selectFunction != null)
2241
{
42+
ErrorStrategy = errorStrategy;
43+
IsSelectFunctionAvailable = selectFunction != null;
44+
2345
this.selectFunction = selectFunction;
2446
}
2547

Sources/LambdaConverters.Wpf/Validator.cs

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,42 @@ namespace LambdaConverters
1111
/// </summary>
1212
public static class Validator
1313
{
14-
sealed class Rule<I> : LambdaConverters.Rule
14+
sealed class Rule<I> : System.Windows.Controls.ValidationRule
1515
{
1616
readonly Func<ValidationRuleArgs<I>, ValidationResult> ruleFunction;
1717

1818
internal Rule(
1919
Func<ValidationRuleArgs<I>, ValidationResult> ruleFunction,
2020
RuleErrorStrategy errorStrategy)
21-
: base(errorStrategy, default(I), typeof(I), ruleFunction != null)
2221
{
22+
ErrorStrategy = errorStrategy;
23+
IsRuleFunctionAvailable = ruleFunction != null;
2324
this.ruleFunction = ruleFunction;
2425
}
2526

27+
RuleErrorStrategy ErrorStrategy { get; }
28+
29+
bool IsRuleFunctionAvailable { get; }
30+
31+
[Pure]
32+
ValidationResult GetErrorValue(ValidationResult defaultValue)
33+
{
34+
switch (ErrorStrategy)
35+
{
36+
case RuleErrorStrategy.ReturnDefaultValue:
37+
return defaultValue;
38+
39+
case RuleErrorStrategy.ReturnInvalid:
40+
return new ValidationResult(false, null);
41+
42+
case RuleErrorStrategy.ReturnValid:
43+
return new ValidationResult(true, null);
44+
45+
default:
46+
throw new NotSupportedException();
47+
}
48+
}
49+
2650
ValidationResult ValidateInternal(object item, CultureInfo cultureInfo)
2751
{
2852
I inputValue;
@@ -59,7 +83,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo)
5983
/// Initializes a new instance of the <see cref="ValidationRule" /> class.
6084
/// </summary>
6185
/// <typeparam name="I">The value type.</typeparam>
62-
/// <param name="ruleFunction">The Validate method.</param>
86+
/// <param name="ruleFunction">The <see cref="ValidationRule.Validate(object, CultureInfo)"/> method.</param>
6387
/// <param name="errorStrategy">The error strategy.</param>
6488
/// <returns>An <see cref="ValidationRule" /> object.</returns>
6589
/// <exception cref="ArgumentOutOfRangeException">

0 commit comments

Comments
 (0)