public static IWebHostBuilder UseStartupModules(this IWebHostBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var options = new StartupModulesOptions();

            options.DiscoverStartupModules();

            if (options.StartupModules.Count == 0)
            {
                return(builder);
            }

            var runner = new StartupModuleRunner(options);

            builder.ConfigureServices((hostContext, services) =>
            {
                // 注册 IStartupFilter 实现
                services.AddSingleton <IStartupFilter>(sp => ActivatorUtilities.CreateInstance <ModulesStartupFilter>(sp, runner));

                runner.ConfigureServices(services, hostContext.Configuration, hostContext.HostingEnvironment);
            });

            return(builder);
        }
Ejemplo n.º 2
0
 public ModulesStartupFilter(StartupModuleRunner runner, IConfiguration configuration, IWebHostEnvironment hostingEnvironment)
 {
     _runner             = runner;
     _configuration      = configuration;
     _hostingEnvironment = hostingEnvironment;
 }