Guest User

Untitled

a guest
Jul 20th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. public class EventPublisher
  2. {
  3. private readonly IList<Func<IHandle>> _subscribers;
  4.  
  5. public EventPublisher(IList<Func<IHandle>> subscribers)
  6. {
  7. _subscribers = subscribers;
  8. }
  9.  
  10. public void Publish<TPayload>(TPayload payload)
  11. where TPayload : class
  12. {
  13. var payloadHandlers = _subscribers.OfType<Func<IHandle<TPayload>>>();
  14.  
  15. foreach (var payloadHandler in payloadHandlers)
  16. {
  17. payloadHandler().Handle(payload);
  18. }
  19. }
  20. }
  21.  
  22. var subscribers = new List<Func<IHandle>> {() => new SomeHandler()};
  23. var eventPublisher = new EventPublisher(subscribers);
  24.  
  25. eventPublisher.Publish(new SomeMessage { Text = "Some random text..." });
  26.  
  27. public interface IHandle {}
  28.  
  29. public interface IHandle<TMessage> : IHandle {
  30. void Handle(TMessage message);
  31. }
  32.  
  33. var subscribers = new List<Func<IHandle<SomeMessage>>> {() => new SomeHandler()};
  34.  
  35. public EventPublisher(IEnumerable<Func<IHandle>> subscribers)
  36. {
  37. _subscribers = subscribers.ToList();
  38. }
  39.  
  40. public void RegisterHandler(IHandle<TMessage> handler) { ... }
Add Comment
Please, Sign In to add comment