A continuación se muestra un código de asp.net core:
public static class EnvironmentVariablesExtensions { ... public static IConfigurationBuilder AddEnvironmentVariables( this IConfigurationBuilder configurationBuilder, string prefix) { configurationBuilder.Add(new EnvironmentVariablesConfigurationSource { Prefix = prefix }); return configurationBuilder; } } public class EnvironmentVariablesConfigurationSource : IConfigurationSource { public string Prefix { get; set; } public IConfigurationProvider Build(IConfigurationBuilder builder) { return new EnvironmentVariablesConfigurationProvider(Prefix); } } public class EnvironmentVariablesConfigurationProvider : ConfigurationProvider { ... } public abstract class ConfigurationProvider : IConfigurationProvider { ... } public interface IConfigurationSource { IConfigurationProvider Build(IConfigurationBuilder builder); }
Mi pregunta es, ¿por qué el equipo de .net usa IConfigurationSource
para envolver IConfigurationProvider
? ¿No es más conciso deshacerse de IConfigurationSource
y reemplazar cualquier firma de método que necesite IConfigurationSource
a IConfigurationProvider
? ¿Cuál es el propósito de IConfigurationSource
?