Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class Aggregate
- {
- private readonly List<Event> newEvents = new List<Event>();
- ...
- protected void Emit(Event @event)
- {
- this.newEvents.Add(@event);
- Play(@event);
- }
- private void Play(Event @event)
- {
- var whenMethod = this
- .GetType()
- .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
- .Where(m => m.Name.Equals("When"))
- .Where(m => m.GetParameters().SingleOrDefault(p => p.ParameterType.FullName.Equals(@event.GetType().FullName)) != null);
- whenMethod.Single().Invoke(this, new object[] { @event });
- }
- }
Add Comment
Please, Sign In to add comment