コード例 #1
0
ファイル: EntityBase.cs プロジェクト: AdrianFreemantle/Hermes
        public virtual bool Equals(EntityBase other)
        {
            if (null != other && other.GetType() == GetType())
            {
                return other.Identity.Equals(Identity);
            }

            return false;
        }
コード例 #2
0
        public bool EventIsOwnedByEntity(IDomainEvent e, EntityBase entity)
        {
            if (entity.GetType() != entityType)
                return false;

            if (e.GetType() != eventType)
                return false;

            if (entityIdentityProperty == null)
            {
                object identity = aggregateIdentityProperty.GetValue(e);
                return entity.Identity.Equals(identity);
            }
            else
            {
                object identity = entityIdentityProperty.GetValue(e);
                return entity.Identity.Equals(identity);
            }
        }
コード例 #3
0
        public static IReadOnlyCollection<EventHandlerProperties> ScanEntity(EntityBase entityBase)
        {
            var entityType = entityBase.GetType();

            try
            {
                readerWriterLock.EnterReadLock();

                if (eventHandlers.ContainsKey(entityType))
                {
                    return eventHandlers[entityType];
                }
            }
            finally
            {
                readerWriterLock.ExitReadLock();
            }

            ScanTypeForHandlers(entityType);
            return eventHandlers[entityType];
        }
コード例 #4
0
 private static string GetErrorMessage(EntityBase entity, IAggregateEvent @event)
 {
     return String.Format("Unable to locate an event handler for {0} on {1}", @event.GetType().FullName, entity.GetType().FullName);
 }
コード例 #5
0
 private static string GetErrorMessage(EntityBase entity, IDomainEvent @event)
 {
     return String.Format("An error occured while invoking event handler {0} on {1}", @event.GetType().FullName, entity.GetType().FullName);
 }