Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class EventPublisher
- {
- private readonly IList<Func<IHandle>> _subscribers;
- public EventPublisher(IList<Func<IHandle>> subscribers)
- {
- _subscribers = subscribers;
- }
- public void Publish<TPayload>(TPayload payload)
- where TPayload : class
- {
- var payloadHandlers = _subscribers.OfType<Func<IHandle<TPayload>>>();
- foreach (var payloadHandler in payloadHandlers)
- {
- payloadHandler().Handle(payload);
- }
- }
- }
- var subscribers = new List<Func<IHandle>> {() => new SomeHandler()};
- var eventPublisher = new EventPublisher(subscribers);
- eventPublisher.Publish(new SomeMessage { Text = "Some random text..." });
- public interface IHandle {}
- public interface IHandle<TMessage> : IHandle {
- void Handle(TMessage message);
- }
- var subscribers = new List<Func<IHandle<SomeMessage>>> {() => new SomeHandler()};
- public EventPublisher(IEnumerable<Func<IHandle>> subscribers)
- {
- _subscribers = subscribers.ToList();
- }
- public void RegisterHandler(IHandle<TMessage> handler) { ... }
Add Comment
Please, Sign In to add comment