private SubscriberWeakLink[] GetSingleSubscribers(EntityChangeEvent entityChange) { lock (SingleEventSubscribers) { SingleEventSubscribers.RemoveAll(s => !s.IsAlive); return(SingleEventSubscribers.Where(x => x.IsSuitable(entityChange)).ToArray()); } }
public void OnPostDelete(IUnitOfWorkTracked uow, PostDeleteEvent deleteEvent) { var change = new EntityChangeEvent(deleteEvent); foreach (var subscriber in GetSingleSubscribers(change)) { subscriber.Invoke(change); } }
internal bool IsSuitable(EntityChangeEvent changeEvent) { if (conditions != null) { return(conditions.IsSuitable(changeEvent)); } if (EntityTypes.Length == 0) { return(true); } return(EntityTypes.Contains(changeEvent.EntityClass)); }
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); }
public void OnPostDelete(IUnitOfWorkTracked uow, PostDeleteEvent deleteEvent) { var change = new EntityChangeEvent(deleteEvent); entityChanges.Add(change); }
public void OnPostUpdate(IUnitOfWorkTracked uow, PostUpdateEvent updateEvent) { var change = new EntityChangeEvent(updateEvent); entityChanges.Add(change); }
public void OnPostInsert(IUnitOfWorkTracked uow, PostInsertEvent insertEvent) { var change = new EntityChangeEvent(insertEvent); entityChanges.Add(change); }