public static void RegisterMessageToMessageBus(IMessageBus messageBus, Type messageType, Type messageListenerType, string exchange, string queue) { messageType.EnsureDerivesFromInterface(typeof(IMessage)); messageListenerType.EnsureDerivesFromGenericInterfaceNotEqual(typeof(IMessageListener <>), messageType); MethodInfo?method = messageBus.GetType() .GetMethod(nameof(IMessageBus.Register), 2, new Type[] { typeof(string), typeof(string) }); MethodInfo generic = method !.MakeGenericMethod(messageType, messageListenerType); generic !.Invoke(messageBus, new object[] { exchange, queue }); }
private void SendMessages() { for (var i = 0; i < NumberOfMessages; i++) { m_Bus.Publish(new TestMessage { Counter = i }); } string name = m_Bus.GetType().Name; WriteLine($"[{name}] Finished sending messages!"); }