/// <summary>
        /// Determines if the message handler applies based on the assigned dispatcher
        /// rules and the dispatcher rule type.
        /// </summary>
        /// <param name="message">The message</param>
        /// <returns>Returns True if the event handler should be called.</returns>
        public bool IsMatch(IMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            if (!DispatchRuleTypes.Any())
            {
                return(true);
            }

            return(RuleApplyType == RuleApplyTypes.All ? DispatchRules.All(r => r.IsMatch(message))
                : DispatchRules.Any(r => r.IsMatch(message)));
        }
        /// <summary>
        /// Determines if the message handler applies based on the assigned dispatcher
        /// rules and the dispatcher rule type.
        /// </summary>
        /// <param name="message">The message</param>
        /// <returns>Returns True if the event handler should be called.</returns>
        public bool IsMatch(IMessage message)
        {
            Check.NotNull(message, nameof(message));

            if (!DispatchRuleTypes.Any())
            {
                return(true);
            }

            if (RuleApplyType == RuleApplyTypes.All)
            {
                return(DispatchRules.All(r => r.IsMatch(message)));
            }

            return(DispatchRules.Any(r => r.IsMatch(message)));
        }