Beispiel #1
0
        public static T Single <T>(this IEnumerable <T> items, Func <T, bool> predicate, Action noMatchAction, Action multipleMatchAction)
        {
            predicate.ArgumentNullCheck(nameof(predicate));
            noMatchAction.ArgumentNullCheck(nameof(noMatchAction));
            multipleMatchAction.ArgumentNullCheck(nameof(multipleMatchAction));

            var matches = items.ArgumentNullCheck(nameof(items)).Where(predicate);

            var count      = 0;
            var firstMatch = default(T);

            foreach (var match in matches)
            {
                if (++count == 1)
                {
                    firstMatch = match;
                }
                if (count > 1)
                {
                    multipleMatchAction();
                    break;
                }
            }
            if (count == 0)
            {
                noMatchAction();
            }
            return(firstMatch);
        }
Beispiel #2
0
        public ResponseStream(Func<ArraySegment<byte>, Action, bool> onNext, Action onComplete)
        {
            onNext.ArgumentNullCheck("onNext");
            onComplete.ArgumentNullCheck("onComplete");

            this.onNext = onNext;
            this.onComplete = onComplete;
        }