/// <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);
            });
        }