| File: IHostBuilder.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.Hosting.Abstractions\src\Microsoft.Extensions.Hosting.Abstractions.csproj (Microsoft.Extensions.Hosting.Abstractions) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Collections.Generic; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace Microsoft.Extensions.Hosting { /// <summary> /// A program initialization abstraction. /// </summary> public interface IHostBuilder { /// <summary> /// Gets a central location for sharing state between components during the host building process. /// </summary> IDictionary<object, object> Properties { get; } /// <summary> /// Sets up the configuration for the builder itself. This will be used to initialize the <see cref="IHostEnvironment"/> /// for use later in the build process. This can be called multiple times and the results will be additive. /// </summary> /// <param name="configureDelegate">The delegate for configuring the <see cref="IConfigurationBuilder"/> that will be used /// to construct the <see cref="IConfiguration"/> for the host.</param> /// <returns>The same instance of the <see cref="IHostBuilder"/> for chaining.</returns> IHostBuilder ConfigureHostConfiguration(Action<IConfigurationBuilder> configureDelegate); /// <summary> /// Sets up the configuration for the remainder of the build process and application. This can be called multiple times and /// the results will be additive. The results will be available at <see cref="HostBuilderContext.Configuration"/> for /// subsequent operations, as well as in <see cref="IHost.Services"/>. /// </summary> /// <param name="configureDelegate">The delegate for configuring the <see cref="IConfigurationBuilder"/> that will be used /// to construct the <see cref="IConfiguration"/> for the application.</param> /// <returns>The same instance of the <see cref="IHostBuilder"/> for chaining.</returns> IHostBuilder ConfigureAppConfiguration(Action<HostBuilderContext, IConfigurationBuilder> configureDelegate); /// <summary> /// Adds services to the container. This can be called multiple times and the results will be additive. /// </summary> /// <param name="configureDelegate">The delegate for configuring the <see cref="IServiceCollection"/> that will be used /// to construct the <see cref="IServiceProvider"/>.</param> /// <returns>The same instance of the <see cref="IHostBuilder"/> for chaining.</returns> IHostBuilder ConfigureServices(Action<HostBuilderContext, IServiceCollection> configureDelegate); /// <summary> /// Overrides the factory used to create the service provider. /// </summary> /// <typeparam name="TContainerBuilder">The type of builder.</typeparam> /// <param name="factory">The factory to register.</param> /// <returns>The same instance of the <see cref="IHostBuilder"/> for chaining.</returns> IHostBuilder UseServiceProviderFactory<TContainerBuilder>(IServiceProviderFactory<TContainerBuilder> factory) where TContainerBuilder : notnull; /// <summary> /// Overrides the factory used to create the service provider. /// </summary> /// <typeparam name="TContainerBuilder">The type of builder.</typeparam> /// <param name="factory">The factory to register.</param> /// <returns>The same instance of the <see cref="IHostBuilder"/> for chaining.</returns> #if NET IHostBuilder UseServiceProviderFactory<TContainerBuilder>(Func<HostBuilderContext, IServiceProviderFactory<TContainerBuilder>> factory) where TContainerBuilder : notnull { ArgumentNullException.ThrowIfNull(factory); throw new NotSupportedException($"The type '{GetType()}' does not support '{nameof(UseServiceProviderFactory)}' with a context-based factory. Override this method to provide an implementation."); } #else IHostBuilder UseServiceProviderFactory<TContainerBuilder>(Func<HostBuilderContext, IServiceProviderFactory<TContainerBuilder>> factory) where TContainerBuilder : notnull; #endif /// <summary> /// Enables configuring the instantiated dependency container. This can be called multiple times and /// the results will be additive. /// </summary> /// <typeparam name="TContainerBuilder">The type of builder.</typeparam> /// <param name="configureDelegate">The delegate which configures the builder.</param> /// <returns>The same instance of the <see cref="IHostBuilder"/> for chaining.</returns> IHostBuilder ConfigureContainer<TContainerBuilder>(Action<HostBuilderContext, TContainerBuilder> configureDelegate); /// <summary> /// Runs the given actions to initialize the host. This can only be called once. /// </summary> /// <returns>An initialized <see cref="IHost"/>.</returns> IHost Build(); } }