public static void ValidateRouteValueOfType <TRouteValue>(
            dynamic actionResult,
            Action <string, string, string> failedValidationAction)
        {
            RuntimeBinderValidator.ValidateBinding(() =>
            {
                var routeValues = (IDictionary <string, object>)actionResult.RouteValues;

                DictionaryValidator.ValidateValueOfType <TRouteValue>(
                    RouteValuesName,
                    routeValues,
                    failedValidationAction);
            });
        }
        /// <summary>
        /// Validates whether RouteValues contains the same route entries as the provided ones from action result containing such property.
        /// </summary>
        /// <param name="actionResult">Action result with RouteValues.</param>
        /// <param name="routeValues">Expected route value dictionary.</param>
        /// <param name="includeCountCheck">Specifies whether the total number of route values should be validated.</param>
        /// <param name="failedValidationAction">Action to call in case of failed validation.</param>
        public static void ValidateRouteValues(
            dynamic actionResult,
            IDictionary <string, object> routeValues,
            bool includeCountCheck,
            Action <string, string, string> failedValidationAction)
        {
            RuntimeBinderValidator.ValidateBinding(() =>
            {
                var actualRouteValues = (IDictionary <string, object>)actionResult.RouteValues;

                DictionaryValidator.ValidateValues(
                    RouteValuesName,
                    actualRouteValues,
                    routeValues,
                    failedValidationAction,
                    includeCountCheck);
            });
        }
        /// <summary>
        /// Validates whether RouteValues contains route entries with key and value as the provided ones from action result containing such property.
        /// </summary>
        /// <param name="actionResult">Action result with RouteValues.</param>
        /// <param name="key">Expected route entry key.</param>
        /// <param name="value">Expected route entry value.</param>
        /// <param name="failedValidationAction">Action to call in case of failed validation.</param>
        public static void ValidateRouteValue(
            dynamic actionResult,
            string key,
            object value,
            Action <string, string, string> failedValidationAction)
        {
            RuntimeBinderValidator.ValidateBinding(() =>
            {
                var routeValues = (IDictionary <string, object>)actionResult.RouteValues;

                DictionaryValidator.ValidateStringKeyAndValue(
                    RouteValuesName,
                    routeValues,
                    key,
                    value,
                    failedValidationAction);
            });
        }