/// <summary> /// 执行事件委托 /// </summary> /// <param name="event">Event.</param> /// <param name="live"><c>true</c>表示实时操作,<c>false</c>表示重放操作</param> /// <typeparam name="TEvent">The 1st type parameter.</typeparam> protected virtual void ApplyChange <TEvent>(TEvent @event, bool live = true) where TEvent : DomainEvent { // 执行事件内联业务 var eventHanlders = EventHandlerHelper.GetInlineEventHandlerMethods(this.GetType(), @event); Parallel.ForEach(eventHanlders, (h) => { h.Invoke(this, new object[] { @event }); }); if (live) { domainEvents.Enqueue(@event); // 事件入队 } }