public void Deliver(IMapleMessage message) { if (!(message is TMessage)) { throw new ArgumentException("Message is not the correct type"); // TODO translate } DeliveryAction.Invoke(message as TMessage); }