public void Bootstrap(IServiceProvider serviceProvider) { var hostContext = new ModuleHostContext <TModule>(_module, _container, serviceProvider); _host = serviceProvider.GetRequiredService <IWebModuleHostBuilderFactory>().CreateWebHostBuilder(_module.Name, _module.Path) .AsModuleHost(hostContext) .Build(); }
private static void ConfigureServices <TModule>(ModuleHostContext <TModule> hostContext, IServiceCollection services) where TModule : WebModuleBase { services.AddSingleton(hostContext.Container); services.EnableSimpleInjectorCrossWiring(hostContext.Container); hostContext.Module.ConfigureServices(hostContext.ModuleServiceProvider, services); var configurer = hostContext.ModuleServiceProvider.GetService <IServicesConfigurer <TModule> >(); configurer?.ConfigureServices(hostContext.Module, hostContext.ModuleServiceProvider, services); services.AddSimpleInjector(hostContext.Container, hostContext.Module.AddSimpleInjector); }
public static IWebHostBuilder AsModuleHost <TModule>(this IWebHostBuilder builder, ModuleHostContext <TModule> hostContext) where TModule : WebModuleBase { builder.ConfigureServices(sc => ConfigureServices(hostContext, sc)) .UseContentRoot(@"..\..\..\..\..\src\" + hostContext.Module.Name) .Configure(app => ConfigureAppAndContainer(app, hostContext)); return(builder); }
private static void ConfigureAppAndContainer <TModule>(IApplicationBuilder app, ModuleHostContext <TModule> hostContext) where TModule : WebModuleBase { hostContext.Module.Configure(app); app.UseSimpleInjector(hostContext.Container, hostContext.Module.UseSimpleInjector); hostContext.Module.ConfigureContainer(hostContext.ModuleServiceProvider, hostContext.Container); var configurer = hostContext.ModuleServiceProvider.GetService <IContainerConfigurer <TModule> >(); configurer?.ConfigureContainer(hostContext.Module, hostContext.ModuleServiceProvider, hostContext.Container); hostContext.Container.AutoCrossWireAspNetComponents(app); hostContext.Container.Verify(); }