Example #1
0
 private SubscriberWeakLink[] GetSingleSubscribers(EntityChangeEvent entityChange)
 {
     lock (SingleEventSubscribers)
     {
         SingleEventSubscribers.RemoveAll(s => !s.IsAlive);
         return(SingleEventSubscribers.Where(x => x.IsSuitable(entityChange)).ToArray());
     }
 }
Example #2
0
        public void OnPostDelete(IUnitOfWorkTracked uow, PostDeleteEvent deleteEvent)
        {
            var change = new EntityChangeEvent(deleteEvent);

            foreach (var subscriber in GetSingleSubscribers(change))
            {
                subscriber.Invoke(change);
            }
        }
Example #3
0
        internal bool IsSuitable(EntityChangeEvent changeEvent)
        {
            if (conditions != null)
            {
                return(conditions.IsSuitable(changeEvent));
            }

            if (EntityTypes.Length == 0)
            {
                return(true);
            }
            return(EntityTypes.Contains(changeEvent.EntityClass));
        }
Example #4
0
        internal bool Invoke(EntityChangeEvent changeEvent)
        {
            if (!IsAlive)
            {
                return(false);
            }

            if (mode != NotifyMode.Single)
            {
                throw new InvalidOperationException("Переданный метод должен реализовать режим Single");
            }

            method.Invoke(targetReference.Target, new object[] { changeEvent });
            return(true);
        }
Example #5
0
        public void OnPostDelete(IUnitOfWorkTracked uow, PostDeleteEvent deleteEvent)
        {
            var change = new EntityChangeEvent(deleteEvent);

            entityChanges.Add(change);
        }
Example #6
0
        public void OnPostUpdate(IUnitOfWorkTracked uow, PostUpdateEvent updateEvent)
        {
            var change = new EntityChangeEvent(updateEvent);

            entityChanges.Add(change);
        }
Example #7
0
        public void OnPostInsert(IUnitOfWorkTracked uow, PostInsertEvent insertEvent)
        {
            var change = new EntityChangeEvent(insertEvent);

            entityChanges.Add(change);
        }