| File: FakeHostBuilder.cs | Web Access |
| Project: src\src\Libraries\Microsoft.Extensions.Hosting.Testing\Microsoft.Extensions.Hosting.Testing.csproj (Microsoft.Extensions.Hosting.Testing) |
// 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; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Testing; namespace Microsoft.Extensions.Hosting.Testing; internal sealed class FakeHostBuilder : IHostBuilder { private readonly IHostBuilder _builder; private readonly FakeHostOptions _options; internal FakeHostBuilder(FakeHostOptions options) : this(new HostBuilder(), options) { } internal FakeHostBuilder(IHostBuilder builder, FakeHostOptions options) { _options = options; _builder = builder; _ = builder .ConfigureServices(services => services .AddSingleton(options) .AddHostedService<HostTerminatorService>()); if (options.FakeLogging) { _ = _builder.ConfigureServices(services => { services .AddFakeLogging() .TryAddSingleton<ILogger, FakeLogger>(); }); } if (options.FakeRedaction) { _builder = _builder.ConfigureServices(services => services.AddFakeRedaction()); } if (options.ValidateScopes || options.ValidateOnBuild) { var serviceProviderOptions = new ServiceProviderOptions { ValidateScopes = options.ValidateScopes, ValidateOnBuild = options.ValidateOnBuild }; _builder = _builder.UseServiceProviderFactory(new DefaultServiceProviderFactory(serviceProviderOptions)); } } public IHostBuilder ConfigureHostConfiguration(Action<IConfigurationBuilder> configureDelegate) { return _builder.ConfigureHostConfiguration(configureDelegate); } public IHostBuilder ConfigureAppConfiguration(Action<HostBuilderContext, IConfigurationBuilder> configureDelegate) { return _builder.ConfigureAppConfiguration(configureDelegate); } public IHostBuilder ConfigureServices(Action<HostBuilderContext, IServiceCollection> configureDelegate) { return _builder.ConfigureServices(configureDelegate); } public IHostBuilder UseServiceProviderFactory<TContainerBuilder>(IServiceProviderFactory<TContainerBuilder> factory) where TContainerBuilder : notnull { return _builder.UseServiceProviderFactory(factory); } public IHostBuilder UseServiceProviderFactory<TContainerBuilder>(Func<HostBuilderContext, IServiceProviderFactory<TContainerBuilder>> factory) where TContainerBuilder : notnull { return _builder.UseServiceProviderFactory(factory); } public IHostBuilder ConfigureContainer<TContainerBuilder>(Action<HostBuilderContext, TContainerBuilder> configureDelegate) => _builder.ConfigureContainer(configureDelegate); public IHost Build() => new FakeHost(_builder.Build(), _options); public IDictionary<object, object> Properties => _builder.Properties; }