public void AcceptPayment(decimal amount) { /* * In this example we inherit the same interface as the original BillingProcessor class * which enables our clients to use our Proxy in place of the original class. But, with this * proxy we apply some protection logic to prevent payments to be made with negative amount and * allow payments to be made with MasterCard only. */ if (amount < 0) { throw new Exception("You can not make negative payments."); } if (_paymentMethod != PaymentMethod.MasterCard) { throw new Exception($"Your payment method {_paymentMethod} is not supported"); } _processor.AcceptPayment(amount); }