DefaultHostApplicationBuilder constructor

DefaultHostApplicationBuilder({
  1. 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);
  };
}