Beispiel #1
0
        public static bool HasItems <T>([AllowNull] this List <T> collection, [NotNull] Predicate <T> action)
        {
            if (collection.CheckIsNotNull() is false || action.CheckIsNotNull() is false)
            {
                return(false);
            }

            return(collection.TrueForAll(action.ArgumentNotNull()));
        }
        public SubscriptionToken Subscribe <TEvent>(Action <TEvent> action, Predicate <TEvent> filter)
        {
            action.ArgumentNotNull(nameof(action));
            filter.ArgumentNotNull(nameof(filter));

            Type eventType = typeof(TEvent);

            if (!this.eventSubscriptions.ContainsKey(eventType))
            {
                this.eventSubscriptions.Add(eventType, new Collection <IEventSubscription>());
            }

            ICollection <IEventSubscription> subscriptions = this.eventSubscriptions[eventType];

            var eventSubscription = new EventSubscription <TEvent>(action, filter);

            eventSubscription.SubscriptionToken = new SubscriptionToken(t => subscriptions.Remove(eventSubscription));

            subscriptions.Add(eventSubscription);

            return(eventSubscription.SubscriptionToken);
        }
Beispiel #3
0
 public EventSubscription(Action <TPayload> action, Predicate <TPayload> filter)
 {
     this.action = action.ArgumentNotNull(nameof(action));
     this.filter = filter.ArgumentNotNull(nameof(filter));
 }