public static ApplicationBuilder <R> UseStartup <T>(params string[] args) where T : BaseStartup
        {
            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(Directory.GetCurrentDirectory())
                                       .AddJsonFile("appsettings.json", optional: true)
                                       .AddEnvironmentVariables(prefix: "PREFIX_")
                                       .AddCommandLine(args);

            ConstructorInfo     ctor             = typeof(T).GetConstructors().First();
            ObjectActivator <T> createdActivator = GetActivator <T>(ctor);

            //create an instance:
            BaseStartup startup = createdActivator(configurationBuilder.Build());

            return(new ApplicationBuilder <R>(startup));
        }
 private ApplicationBuilder(BaseStartup startup)
 {
     this.startup = startup;
 }