核心代码是 Create方法:
public static IServiceCollection Create(IServiceProvider fallbackServices, IConfiguration configuration = null)
{
configuration = configuration ?? new Configuration();
var services = Import(fallbackServices); //外部的服务导入
services.AddHosting(configuration);
/* AddHosting SourceCode
services.TryAdd(describer.Transient<IHostingEngine, HostingEngine>());
services.TryAdd(describer.Transient<IServerManager, ServerManager>());
services.TryAdd(describer.Transient<IStartupManager, StartupManager>());
services.TryAdd(describer.Transient<IStartupLoaderProvider, StartupLoaderProvider>());
services.TryAdd(describer.Transient<IApplicationBuilderFactory, ApplicationBuilderFactory>());
services.TryAdd(describer.Transient<IHttpContextFactory, HttpContextFactory>());
services.TryAdd(describer.Instance<IApplicationLifetime>(new ApplicationLifetime()));
services.AddTypeActivator(configuration);
services.AddLogging(configuration);
services.TryAdd(describer.Singleton<IHostingEnvironment, HostingEnvironment>());
services.TryAdd(describer.Singleton<IHttpContextAccessor, HttpContextAccessor>());
services.AddInstance<IConfigureHostingEnvironment>(new ConfigureHostingEnvironment(configuration));
*/
services.AddSingleton<IServiceManifest>(sp => new HostingManifest(fallbackServices));
return services;
}
浙公网安备 33010602011771号