コード例 #1
0
 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}");
     }
 }
コード例 #2
0
 /// <summary>
 /// Подписываемся на события изменения любых объектов.
 /// </summary>
 public void BatchSubscribeOnAll(BatchEntityChangeHandler subscriber)
 {
     lock (BatchEventSubscribers)
     {
         BatchEventSubscribers.Add(new SubscriberWeakLink(subscriber));
         logger.Debug($"Добавлена пакетная подписка на все изменения. Всего {BatchEventSubscribers.Count}");
     }
 }
コード例 #3
0
 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}");
     }
 }
コード例 #4
0
 public SelectionConditions BatchSubscribe(BatchEntityChangeHandler subscriber)
 {
     lock (BatchEventSubscribers) {
         var condition = new SelectionConditions();
         BatchEventSubscribers.Add(new SubscriberWeakLink(condition, subscriber));
         logger.Debug($"Добавлена пакетная подписка с условиями. Всего {BatchEventSubscribers.Count}");
         return(condition);
     }
 }
コード例 #5
0
 private void ParseHandler(BatchEntityChangeHandler handler)
 {
     targetReference = new WeakReference(handler.Target);
     method          = handler.Method;
     mode            = NotifyMode.Batch;
 }
コード例 #6
0
 internal SubscriberWeakLink(BatchEntityChangeHandler handler)
 {
     ParseHandler(handler);
     EntityTypes = new Type[] { };
 }
コード例 #7
0
 internal SubscriberWeakLink(SelectionConditions conditions, BatchEntityChangeHandler handler)
 {
     ParseHandler(handler);
     this.conditions = conditions;
 }
コード例 #8
0
 internal SubscriberWeakLink(Type[] entityClasses, BatchEntityChangeHandler handler)
 {
     ParseHandler(handler);
     EntityTypes = entityClasses;
 }
コード例 #9
0
 public void Unsubscribe(BatchEntityChangeHandler subscriber)
 {
     throw new NotImplementedException();
 }