123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using System.Collections.Generic;
- using System.Linq;
- namespace InABox.WPF
- {
- public enum MatchComparison
- {
- EqualTo,
- NotEqualTo
- }
- public enum MatchType
- {
- Any,
- All
- }
-
- public class AbstractMatcher<T> : AbstractMultiConverter<T,bool>
- {
- public MatchComparison Comparison { get; set; }
-
- public MatchType Type { get; set; }
-
- public T Value { get; set; }
-
- protected override bool Convert(IEnumerable<T> value, object parameter = null)
- {
- var result = Type switch
- {
- MatchType.Any => Comparison == MatchComparison.EqualTo
- ? value.Any(x => Equals(Value, x))
- : value.Any(x => !Equals(Value, x)),
- MatchType.All => Comparison == MatchComparison.EqualTo
- ? value.All(x => Equals(Value, x))
- : value.All(x => !Equals(Value, x)),
- _ => false
- };
- return result;
- }
- }
- }
|