示例#1
0
        /// <inheritdoc />
        public override Func <Func <TMessageType, CancellationToken, Task>, Func <TMessageType, CancellationToken, Task> > BuildDecorator()
        {
            if (this.keySelector == null)
            {
                throw KeySelectorMissingException.CreateDefault();
            }

            return(innerHandler => new NoDuplicatesDecorator <TMessageType, TKeyType>(innerHandler, this.keySelector, this.equalityComparer).HandleMessageAsync);
        }
        internal ChainDecorator <TMessageType> Build(Func <TMessageType, CancellationToken, Task> nextHandler)
        {
            if (this.KeySelectorValue == null)
            {
                throw KeySelectorMissingException.CreateDefault();
            }

            return(new SemaphoreWithKeyDecorator <TMessageType, TKeyType>(nextHandler, this));
        }