/// <summary> /// 默认构造函数 /// </summary> public AggregateRoot() { _sourcableEvents = new Queue <SourcableEvent>(); _notifyEvents = new Queue <object>(); _originalVersion = DefaultVersion; _logger = ObjectContainer.Resolve <ILoggerFactory>().Create("EventSourcing.AggregateRoot"); _callbackProvider = ObjectContainer.Resolve <IAggregateRootInternalHandlerProvider>(); _eventTypeProvider = ObjectContainer.Resolve <IEventTypeProvider>(); }
/// <summary>Initialize from the given snapshot. /// </summary> internal void InitializeFromSnapshot(Snapshot snapshot) { UniqueId = snapshot.AggregateRootId; Version = snapshot.StreamVersion; _uncommittedEvents = new Queue <IEvent>(); if (_eventHandlerProvider == null) { _eventHandlerProvider = ObjectContainer.Resolve <IAggregateRootInternalHandlerProvider>(); } }
private void HandleEvent(IDomainEvent domainEvent) { if (_eventHandlerProvider == null) { _eventHandlerProvider = ObjectContainer.Resolve <IAggregateRootInternalHandlerProvider>(); } var handler = _eventHandlerProvider.GetInternalEventHandler(GetType(), domainEvent.GetType()); if (handler == null) { throw new Exception(string.Format("Could not find event handler for [{0}] of [{1}]", domainEvent.GetType().FullName, GetType().FullName)); } handler(this, domainEvent); }
private void HandleEvent(IDomainEvent domainEvent) { if (_eventHandlerProvider == null) { _eventHandlerProvider = ObjectContainer.Resolve <IAggregateRootInternalHandlerProvider>(); } var handler = _eventHandlerProvider.GetInternalEventHandler(GetType(), domainEvent.GetType()); if (handler == null) { throw new Exception(string.Format("Could not find event handler for [{0}] of [{1}]", domainEvent.GetType().FullName, GetType().FullName)); } if (Equals(this._id, default(TAggregateRootId)) && domainEvent.Version == 1) { this._id = TypeUtils.ConvertType <TAggregateRootId>(domainEvent.AggregateRootStringId); } handler(this, domainEvent); }
public DefaultEventSourcingService(IAggregateRootInternalHandlerProvider eventHandlerProvider) { _eventHandlerProvider = eventHandlerProvider; }