using ConsoleApp1.intf; namespace ConsoleApp1.pubsub.generics { internal class Publisher : IPublisher where T : IMessage { public List> _subscribers = new List>(); public void Publish(T message) { if (string.IsNullOrEmpty(message?.Text)) { return; } if (_subscribers.Count == 0) { return; } // ... // ... // ... foreach (ISubscriber? subscriber in _subscribers) { if (subscriber == null) { continue; } subscriber?.FireEvent(message); } } public void Subscribe(ISubscriber subscriber) { _subscribers.Add(subscriber); } } }