/// <summary>
        /// Sets up an <see cref="IStartupFilter"/> that configures the <see cref="CultureReplacerMiddleware"/> at the
        /// beginning of the pipeline to change the <see cref="CultureInfo.CurrentCulture"/> and <see cref="CultureInfo.CurrentUICulture"/>
        /// of the thread so that they match the cultures in <paramref name="culture"/> and <paramref name="uiCulture"/> for the rest of the
        /// <see cref="HttpRequest"/>.
        /// </summary>
        /// <param name="culture">The culture to use when processing <see cref="HttpRequest"/>.</param>
        /// <param name="uiCulture">The UI culture to use when processing <see cref="HttpRequest"/>.</param>
        /// <returns>An instance of this <see cref="MvcWebApplicationBuilder{TStartup}"/></returns>
        public static MvcWebApplicationBuilder <TStartup> UseRequestCulture <TStartup>(this MvcWebApplicationBuilder <TStartup> builder, string culture, string uiCulture)
            where TStartup : class
        {
            if (culture == null)
            {
                throw new ArgumentNullException(nameof(culture));
            }

            if (uiCulture == null)
            {
                throw new ArgumentNullException(nameof(uiCulture));
            }

            builder.ConfigureBeforeStartup(services =>
            {
                services.TryAddSingleton(new TestCulture
                {
                    Culture   = culture,
                    UICulture = uiCulture
                });
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IStartupFilter, CultureReplacerStartupFilter>());
            });

            return(builder);
        }
 protected override void ConfigureApplication(MvcWebApplicationBuilder <TStartup> builder)
 {
     base.ConfigureApplication(builder);
     builder.ConfigureBeforeStartup(services =>
     {
         services.TryAddTransient <HtmlEncoder, HtmlTestEncoder>();
         services.TryAddTransient <JavaScriptEncoder, JavaScriptTestEncoder>();
         services.TryAddTransient <UrlEncoder, UrlTestEncoder>();
     });
 }