Beispiel #1
0
        /// <inheritdoc />
        /// <exception cref="T:System.ArgumentNullException" />
        /// <exception cref="T:ViennaNET.Mediator.Exceptions.UnsupportedTypeMessageException" />
        public void SendMessage <TMessage>(TMessage message) where TMessage : class, IMessage
        {
            _preProcessorService.ExecuteAllPreProcessors(message);
            try
            {
                switch (message)
                {
                case null:
                    throw new ArgumentNullException(nameof(message));

                case IEvent _:
                    PublishEvent(message);
                    break;

                case ICommand _:
                    ExecuteCommand(message);
                    break;

                default:
                    throw new UnsupportedTypeMessageException($"Unsupported message type: {message.GetType()}.");
                }
            }
            catch (Exception e)
            {
                LogSendError(e);
                throw;
            }
        }