public PredicateDiscountBuilder <TType> ApplyDiscount(Func <TType, decimal> discountFunc)
 {
     _predicateDiscountCalculator.DiscountCalculator = discountFunc;
     _discountStrategyCalculator.AddCalculator(_predicateDiscountCalculator);
     _predicateDiscountCalculator = null;
     return(this);
 }
 public PredicateDiscountBuilder <TType> When(Predicate <TType> predicate)
 {
     if (_predicateDiscountCalculator == null)
     {
         _predicateDiscountCalculator = new PredicateDiscountCalculator <TType>();
     }
     _predicateDiscountCalculator.Predicate = predicate;
     return(this);
 }