riversong code showcase

This commit is contained in:
Daniele Marotta
2026-05-21 15:52:18 +02:00
commit 4c9eea1c02
462 changed files with 23406 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
using System;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class SignalBus : ISignalBus, IDisposable
{
private readonly ListMultiDictionary<Type, Delegate> _subscribers = new();
public void Dispose()
{
_subscribers.Clear();
}
public void Raise<T>(T signal)
{
if (!_subscribers.TryGetValues(typeof(T), out var handlers)) return;
foreach (var handler in handlers) ((Action<T>)handler).Invoke(signal);
}
public void Subscribe<T>(Action<T> handler)
{
_subscribers.Add(typeof(T), handler);
}
public void Unsubscribe<T>(Action<T> handler)
{
_subscribers.Remove(typeof(T), handler);
}
}
}