DefaultHostApplicationBuilder constructor
DefaultHostApplicationBuilder({
- HostApplicationBuilderSettings? settings,
Implementation
DefaultHostApplicationBuilder({HostApplicationBuilderSettings? settings})
: _hostBuilt = false {
settings ??= HostApplicationBuilderSettings();
_configuration = settings.configuration ?? ConfigurationManager();
if (!settings.disableDefaults) {
if (settings.configurationRootPath == null &&
configuration[HostDefaults.contentRootKey] == null) {
hosting_ext.setDefaultContentRoot(configuration);
}
configuration.addEnvironmentVariables(prefix: 'DOTNET_');
}
List<MapEntry<String, String>>? optionList;
if (settings.applicationName != null) {
optionList ??= <MapEntry<String, String>>[];
optionList.add(
MapEntry(HostDefaults.applicationKey, settings.applicationName!),
);
}
if (settings.environmentName != null) {
optionList ??= <MapEntry<String, String>>[];
optionList.add(
MapEntry(HostDefaults.environmentKey, settings.environmentName!),
);
}
if (settings.configurationRootPath != null) {
optionList ??= <MapEntry<String, String>>[];
optionList.add(
MapEntry(HostDefaults.contentRootKey, settings.configurationRootPath!),
);
}
if (optionList != null) {
configuration.addInMemoryCollection(optionList);
}
_environment = createHostingEnvironment(configuration);
_hostBuilderContext = HostBuilderContext(<Object, Object>{})
..hostingEnvironment = _environment
..configuration = configuration;
populateServiceCollection(
services,
_hostBuilderContext,
_environment,
configuration,
() => _appServices!,
);
_logging = _LoggingBuilder(services);
_metrics = _MetricsBuilder(services);
// Apply default app configuration (appsettings.json, environment
// variables, command line)
if (!settings.disableDefaults) {
hosting_ext_io.applyDefaultAppConfiguration(
_hostBuilderContext,
configuration,
settings.args,
);
}
ServiceProviderOptions? serviceProviderOptions;
if (!settings.disableDefaults) {
hosting_ext_io.addDefaultServices(
_hostBuilderContext,
services,
);
serviceProviderOptions =
hosting_ext_io.createDefaultServiceProviderOptions(
_hostBuilderContext,
);
}
_createServiceProvider = () {
// Call _configureContainer in case anyone adds callbacks via
// HostBuilderAdapter.ConfigureContainer<ServiceCollection>() during
// build. Otherwise, this no-ops.
_configureContainer(services);
return serviceProviderOptions == null
? services.buildServiceProvider()
: services.buildServiceProvider(serviceProviderOptions);
};
}