public void BatchSubscribeOnEntity <TEntity1, TEntity2>(BatchEntityChangeHandler subscriber) { lock (BatchEventSubscribers) { BatchEventSubscribers.Add(new SubscriberWeakLink(new[] { typeof(TEntity1), typeof(TEntity2) }, subscriber)); logger.Debug($"Добавлена пакетная подписка на изменение {typeof(TEntity1)}, {typeof(TEntity2)}. Всего {BatchEventSubscribers.Count}"); } }
/// <summary> /// Подписываемся на события изменения любых объектов. /// </summary> public void BatchSubscribeOnAll(BatchEntityChangeHandler subscriber) { lock (BatchEventSubscribers) { BatchEventSubscribers.Add(new SubscriberWeakLink(subscriber)); logger.Debug($"Добавлена пакетная подписка на все изменения. Всего {BatchEventSubscribers.Count}"); } }
public void BatchSubscribeOnEntity(BatchEntityChangeHandler subscriber, params Type[] entityClasses) { lock (BatchEventSubscribers) { BatchEventSubscribers.Add(new SubscriberWeakLink(entityClasses, subscriber)); var list = String.Join(", ", entityClasses.Select(x => x.Name)); logger.Debug($"Добавлена пакетная подписка на изменение {list}. Всего {BatchEventSubscribers.Count}"); } }
public SelectionConditions BatchSubscribe(BatchEntityChangeHandler subscriber) { lock (BatchEventSubscribers) { var condition = new SelectionConditions(); BatchEventSubscribers.Add(new SubscriberWeakLink(condition, subscriber)); logger.Debug($"Добавлена пакетная подписка с условиями. Всего {BatchEventSubscribers.Count}"); return(condition); } }
private void ParseHandler(BatchEntityChangeHandler handler) { targetReference = new WeakReference(handler.Target); method = handler.Method; mode = NotifyMode.Batch; }
internal SubscriberWeakLink(BatchEntityChangeHandler handler) { ParseHandler(handler); EntityTypes = new Type[] { }; }
internal SubscriberWeakLink(SelectionConditions conditions, BatchEntityChangeHandler handler) { ParseHandler(handler); this.conditions = conditions; }
internal SubscriberWeakLink(Type[] entityClasses, BatchEntityChangeHandler handler) { ParseHandler(handler); EntityTypes = entityClasses; }
public void Unsubscribe(BatchEntityChangeHandler subscriber) { throw new NotImplementedException(); }