/// <summary>
        /// Links an <see cref="IStartup"/> instance to an <see cref="IServiceBuilder"/>.
        /// </summary>
        public static IServiceBuilder UseStartup(this IServiceBuilder serviceBuilder, IStartup startup)
        {
            serviceBuilder.AddConfigureConfiguration(startup.ConfigureConfiguration);

            serviceBuilder.AddConfigureServices(startup.ConfigureServices);

            serviceBuilder.AddConfigure(startup.Configure);

            return(serviceBuilder);
        }
        /// <summary>
        /// Adds the <typeparamref name="TAsynchronousProgramAsService"/> service implementation as a <see cref="ServiceLifetime.Singleton"/>.
        /// </summary>
        public static IServiceBuilder<TService> AddAsynchronousProgramAsService<TService, TAsynchronousProgramAsService>(this IServiceBuilder<TService> serviceBuilder)
            where TAsynchronousProgramAsService : AsynchronousProgramAsServiceBase
        {
            serviceBuilder.AddConfigureServices(services =>
            {
                services.AddSingleton<TAsynchronousProgramAsService>();
            });

            return serviceBuilder;
        }