Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
        }