From d9689095cd3c1e0654fe471011a95bcf4a44c82e Mon Sep 17 00:00:00 2001 From: Marcel Marnitz Date: Tue, 5 May 2020 12:28:02 +0200 Subject: [PATCH] Determine event type at runtime (fixes #14) --- src/Redbus/Redbus.Tests/EventBusTests.cs | 12 ++++++++++++ src/Redbus/Redbus/EventBus.cs | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Redbus/Redbus.Tests/EventBusTests.cs b/src/Redbus/Redbus.Tests/EventBusTests.cs index e32a028..bf3ec37 100644 --- a/src/Redbus/Redbus.Tests/EventBusTests.cs +++ b/src/Redbus/Redbus.Tests/EventBusTests.cs @@ -178,6 +178,18 @@ public void PublishDontThrowSubscriberExceptionTest() Assert.IsTrue(thirdSubscriberHit); // Third subscriber will be hit, because we didn't throw. } + [TestMethod] + public void PublishCustomEventAsSubtype() + { + var eventBus = new EventBus(); + bool subscriberHit = false; + eventBus.Subscribe(s => { subscriberHit = true; }); + + eventBus.Publish((EventBase)(new CustomTestEvent())); + + Assert.IsTrue(subscriberHit); + } + private void CustomTestEventMethodHandler(CustomTestEvent customTestEvent) { Assert.AreEqual("Custom Event", customTestEvent.Name); diff --git a/src/Redbus/Redbus/EventBus.cs b/src/Redbus/Redbus/EventBus.cs index ba08bd0..822e796 100644 --- a/src/Redbus/Redbus/EventBus.cs +++ b/src/Redbus/Redbus/EventBus.cs @@ -76,8 +76,8 @@ public void Publish(TEventBase eventItem) where TEventBase : EventBa var allSubscriptions = new List(); lock (SubscriptionsLock) { - if (_subscriptions.ContainsKey(typeof(TEventBase))) - allSubscriptions = _subscriptions[typeof(TEventBase)].ToList(); + if (_subscriptions.ContainsKey(eventItem.GetType())) + allSubscriptions = _subscriptions[eventItem.GetType()].ToList(); } for (var index = 0; index < allSubscriptions.Count; index++)