| File: ConfigurationBuilder.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.Configuration\src\Microsoft.Extensions.Configuration.csproj (Microsoft.Extensions.Configuration) |
// 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; namespace Microsoft.Extensions.Configuration { /// <summary> /// Builds key/value-based configuration settings for use in an application. /// </summary> public class ConfigurationBuilder : IConfigurationBuilder { private readonly List<IConfigurationSource> _sources = new(); /// <summary> /// Gets the sources used to obtain configuration values. /// </summary> public IList<IConfigurationSource> Sources => _sources; /// <summary> /// Gets a key/value collection that can be used to share data between the <see cref="IConfigurationBuilder"/> /// and the registered <see cref="IConfigurationProvider"/> providers. /// </summary> public IDictionary<string, object> Properties { get; } = new Dictionary<string, object>(); /// <summary> /// Adds a new configuration source. /// </summary> /// <param name="source">The configuration source to add.</param> /// <returns>The same <see cref="IConfigurationBuilder"/>.</returns> public IConfigurationBuilder Add(IConfigurationSource source) { ArgumentNullException.ThrowIfNull(source); _sources.Add(source); return this; } /// <summary> /// Builds an <see cref="IConfiguration"/> with keys and values from the set of providers registered in /// <see cref="Sources"/>. /// </summary> /// <returns>An <see cref="IConfigurationRoot"/> with keys and values from the registered providers.</returns> public IConfigurationRoot Build() { var providers = new List<IConfigurationProvider>(); foreach (IConfigurationSource source in _sources) { IConfigurationProvider provider = source.Build(this); providers.Add(provider); } return new ConfigurationRoot(providers); } } }