using System.ComponentModel; using System.Runtime.CompilerServices; using Filtration.ObjectModel.Annotations; using Filtration.ObjectModel.Enums; using Filtration.ObjectModel.Extensions; namespace Filtration.ObjectModel { public class NumericFilterPredicate : INotifyPropertyChanged { private FilterPredicateOperator _predicateOperator; private int _predicateOperand; public NumericFilterPredicate(FilterPredicateOperator predicateOperator, int predicateOperand) { PredicateOperator = predicateOperator; PredicateOperand = predicateOperand; } public NumericFilterPredicate() { } public FilterPredicateOperator PredicateOperator { get { return _predicateOperator; } set { _predicateOperator = value; OnPropertyChanged(); } } public int PredicateOperand { get { return _predicateOperand; } set { _predicateOperand = value; OnPropertyChanged(); } } public override string ToString() { return PredicateOperator.GetAttributeDescription() + " " + PredicateOperand; } public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] public virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { var handler = PropertyChanged; handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }