A simple, lightweight event messenger that uses a ConditionalWeakTable internally.
Handlers are automatically removed when the subscriber is garbage-collected.
NuGet: https://www.nuget.org/packages/Bitbound.SimpleMessenger
// Program.cs using Bitbound.SimpleMessenger; // ... services.AddSingleton<IMessenger>(WeakReferenceMessenger.Default);
// MyService.cs public class MyService : IMyService { public MyService(IMessenger messenger) { // Registers a handler under the default channel. // The handler will be removed automatically if // this MyService instance is garbage-collected. messenger.Register<SomeMessageType>(this, MyHandler); } private async Task MyHandler(object subscriber, SomeMessageType message) { // Handle the message. } }