Guest User

Untitled

a guest
Oct 24th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.61 KB | None | 0 0
  1. public abstract class Aggregate
  2. {
  3. private readonly List<Event> newEvents = new List<Event>();
  4.  
  5. ...
  6.  
  7. protected void Emit(Event @event)
  8. {
  9. this.newEvents.Add(@event);
  10. Play(@event);
  11. }
  12.  
  13. private void Play(Event @event)
  14. {
  15. var whenMethod = this
  16. .GetType()
  17. .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
  18. .Where(m => m.Name.Equals("When"))
  19. .Where(m => m.GetParameters().SingleOrDefault(p => p.ParameterType.FullName.Equals(@event.GetType().FullName)) != null);
  20. whenMethod.Single().Invoke(this, new object[] { @event });
  21. }
  22. }
Add Comment
Please, Sign In to add comment