public void Publish(Events.IEvent eventData) { if (eventData is PaymentSucceededEvent) { paymentSucceededEventHandler.Handle((PaymentSucceededEvent)eventData); } else if (eventData is PaymentFailedEvent) { paymentFailedEventHandler.Handle((PaymentFailedEvent)eventData); } else if (eventData is PaymentBeginEvent) { paymentBeginEventHandler.Handle((PaymentBeginEvent)eventData); } }