HostApplicationBuilder constructor

HostApplicationBuilder({
  1. HostApplicationBuilderSettings? settings,
})

Implementation

HostApplicationBuilder({HostApplicationBuilderSettings? settings}) {
  var appSettings = settings ?? HostApplicationBuilderSettings();
  _configuration = appSettings.configuration ?? ConfigurationManager();

  if (!appSettings.disableDefaults) {
    HostingHostBuilderExtensions.applyDefaultHostConfiguration(
      configuration,
      appSettings.args,
    );
  }

  List<MapEntry<String, String>>? optionList;
  if (appSettings.applicationName != null) {
    optionList ??= <MapEntry<String, String>>[];
    optionList.add(
      MapEntry(host_defaults.applicationKey, appSettings.applicationName!),
    );
  }
  if (appSettings.environmentName != null) {
    optionList ??= <MapEntry<String, String>>[];
    optionList.add(
      MapEntry(host_defaults.environmentKey, appSettings.environmentName!),
    );
  }
  if (appSettings.configurationRootPath != null) {
    optionList ??= <MapEntry<String, String>>[];
    optionList.add(
      MapEntry(
          host_defaults.contentRootKey, appSettings.configurationRootPath!),
    );
  }
  if (optionList != null) {
    configuration.addInMemoryCollection(optionList);
  }

  var hostingEnvironment = createHostingEnvironment(configuration);

  _hostBuilderContext = HostBuilderContext(<Object, Object>{})
    ..hostingEnvironment = hostingEnvironment
    ..configuration = configuration;

  _environment = hostingEnvironment;

  populateServiceCollection(
    services,
    _hostBuilderContext,
    hostingEnvironment,
    configuration,
    () => _appServices!,
  );

  _logging = _LoggingBuilder(services);

  ServiceProviderOptions? serviceProviderOptions;

  if (!appSettings.disableDefaults) {
    HostingHostBuilderExtensions.addDefaultServices(
      _hostBuilderContext,
      services,
    );
    serviceProviderOptions =
        HostingHostBuilderExtensions.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);
  };
}