// <auto-generated/> #nullable enable annotations #nullable disable warnings // Suppress warnings about [Obsolete] member usage in generated code. #pragma warning disable CS0612, CS0618 namespace System.Runtime.CompilerServices { using System; using System.CodeDom.Compiler; [GeneratedCode("Microsoft.Extensions.Configuration.Binder.SourceGeneration", "8.0.10.31311")] [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] file sealed class InterceptsLocationAttribute : Attribute { public InterceptsLocationAttribute(string filePath, int line, int column) { } } } namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration { using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.Globalization; using System.Runtime.CompilerServices; [GeneratedCode("Microsoft.Extensions.Configuration.Binder.SourceGeneration", "8.0.10.31311")] file static class BindingExtensions { #region IConfiguration extensions. /// <summary>Attempts to bind the configuration instance to a new instance of type T.</summary> [InterceptsLocation(@"/_/src/Libraries/Microsoft.Extensions.Telemetry/Sampling/RandomProbabilisticSamplerConfigureOptions.cs", 32, 68)] public static T? Get<T>(this IConfiguration configuration) => (T?)(GetCore(configuration, typeof(T), configureOptions: null) ?? default(T)); #endregion IConfiguration extensions. #region OptionsBuilder<TOptions> extensions. /// <summary>Registers a configuration instance which <typeparamref name="TOptions"/> will bind against.</summary> [InterceptsLocation(@"/_/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingEnrichmentExtensions.cs", 58, 105)] [InterceptsLocation(@"/_/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingRedactionExtensions.cs", 56, 55)] public static OptionsBuilder<TOptions> Bind<TOptions>(this OptionsBuilder<TOptions> optionsBuilder, IConfiguration config) where TOptions : class { return Bind(optionsBuilder, config, configureBinder: null); } /// <summary>Registers a configuration instance which <typeparamref name="TOptions"/> will bind against.</summary> public static OptionsBuilder<TOptions> Bind<TOptions>(this OptionsBuilder<TOptions> optionsBuilder, IConfiguration config, Action<BinderOptions>? configureBinder) where TOptions : class { if (optionsBuilder is null) { throw new ArgumentNullException(nameof(optionsBuilder)); } Configure<TOptions>(optionsBuilder.Services, optionsBuilder.Name, config, configureBinder); return optionsBuilder; } #endregion OptionsBuilder<TOptions> extensions. #region IServiceCollection extensions. /// <summary>Registers a configuration instance which TOptions will bind against.</summary> [InterceptsLocation(@"/_/src/Libraries/Microsoft.Extensions.Telemetry/Enrichment/ApplicationEnricherServiceCollectionExtensions.cs", 103, 14)] [InterceptsLocation(@"/_/src/Libraries/Microsoft.Extensions.Telemetry/Enrichment/ProcessEnricherServiceCollectionExtensions.cs", 63, 14)] [InterceptsLocation(@"/_/src/Libraries/Microsoft.Extensions.Telemetry/Latency/LatencyConsoleExtensions.cs", 63, 22)] [InterceptsLocation(@"/_/src/Libraries/Microsoft.Extensions.Telemetry/Latency/LatencyContextExtensions.cs", 61, 22)] public static IServiceCollection Configure<TOptions>(this IServiceCollection services, IConfiguration config) where TOptions : class { return Configure<TOptions>(services, string.Empty, config, configureOptions: null); } /// <summary>Registers a configuration instance which TOptions will bind against.</summary> public static IServiceCollection Configure<TOptions>(this IServiceCollection services, string? name, IConfiguration config, Action<BinderOptions>? configureOptions) where TOptions : class { if (services is null) { throw new ArgumentNullException(nameof(services)); } if (config is null) { throw new ArgumentNullException(nameof(config)); } OptionsServiceCollectionExtensions.AddOptions(services); services.AddSingleton<IOptionsChangeTokenSource<TOptions>>(new ConfigurationChangeTokenSource<TOptions>(name, config)); return services.AddSingleton<IConfigureOptions<TOptions>>(new ConfigureNamedOptions<TOptions>(name, instance => BindCoreMain(config, instance, typeof(TOptions), configureOptions))); } #endregion IServiceCollection extensions. #region Core binding extensions. private readonly static Lazy<HashSet<string>> s_configKeys_ApplicationLogEnricherOptions = new(() => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "EnvironmentName", "ApplicationName", "DeploymentRing", "BuildVersion" }); private readonly static Lazy<HashSet<string>> s_configKeys_ProcessLogEnricherOptions = new(() => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "ProcessId", "ThreadId" }); private readonly static Lazy<HashSet<string>> s_configKeys_LatencyConsoleOptions = new(() => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "OutputCheckpoints", "OutputTags", "OutputMeasures" }); private readonly static Lazy<HashSet<string>> s_configKeys_LatencyContextOptions = new(() => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "ThrowOnUnregisteredNames" }); private readonly static Lazy<HashSet<string>> s_configKeys_LoggerEnrichmentOptions = new(() => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "CaptureStackTraces", "UseFileInfoForStackTraces", "IncludeExceptionMessage", "MaxStackTraceLength" }); private readonly static Lazy<HashSet<string>> s_configKeys_LoggerRedactionOptions = new(() => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "ApplyDiscriminator" }); private readonly static Lazy<HashSet<string>> s_configKeys_RandomProbabilisticSamplerFilterRule = new(() => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "Probability", "CategoryName", "LogLevel", "EventId", "EventName" }); private readonly static Lazy<HashSet<string>> s_configKeys_RandomProbabilisticSamplerOptions = new(() => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "Rules" }); public static object? GetCore(this IConfiguration configuration, Type type, Action<BinderOptions>? configureOptions) { if (configuration is null) { throw new ArgumentNullException(nameof(configuration)); } BinderOptions? binderOptions = GetBinderOptions(configureOptions); if (!HasValueOrChildren(configuration)) { return null; } if (type == typeof(global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerOptions)) { var instance = new global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerOptions(); BindCore(configuration, ref instance, defaultValueIfNotFound: true, binderOptions); return instance; } throw new NotSupportedException($"Unable to bind to type '{type}': generator did not detect the type as input."); } public static void BindCoreMain(IConfiguration configuration, object instance, Type type, Action<BinderOptions>? configureOptions) { if (instance is null) { return; } if (!HasValueOrChildren(configuration)) { return; } BinderOptions? binderOptions = GetBinderOptions(configureOptions); if (type == typeof(global::Microsoft.Extensions.Diagnostics.Enrichment.ApplicationLogEnricherOptions)) { var temp = (global::Microsoft.Extensions.Diagnostics.Enrichment.ApplicationLogEnricherOptions)instance; BindCore(configuration, ref temp, defaultValueIfNotFound: false, binderOptions); return; } else if (type == typeof(global::Microsoft.Extensions.Diagnostics.Enrichment.ProcessLogEnricherOptions)) { var temp = (global::Microsoft.Extensions.Diagnostics.Enrichment.ProcessLogEnricherOptions)instance; BindCore(configuration, ref temp, defaultValueIfNotFound: false, binderOptions); return; } else if (type == typeof(global::Microsoft.Extensions.Diagnostics.Latency.LatencyConsoleOptions)) { var temp = (global::Microsoft.Extensions.Diagnostics.Latency.LatencyConsoleOptions)instance; BindCore(configuration, ref temp, defaultValueIfNotFound: false, binderOptions); return; } else if (type == typeof(global::Microsoft.Extensions.Diagnostics.Latency.LatencyContextOptions)) { var temp = (global::Microsoft.Extensions.Diagnostics.Latency.LatencyContextOptions)instance; BindCore(configuration, ref temp, defaultValueIfNotFound: false, binderOptions); return; } else if (type == typeof(global::Microsoft.Extensions.Logging.LoggerEnrichmentOptions)) { var temp = (global::Microsoft.Extensions.Logging.LoggerEnrichmentOptions)instance; BindCore(configuration, ref temp, defaultValueIfNotFound: false, binderOptions); return; } else if (type == typeof(global::Microsoft.Extensions.Logging.LoggerRedactionOptions)) { var temp = (global::Microsoft.Extensions.Logging.LoggerRedactionOptions)instance; BindCore(configuration, ref temp, defaultValueIfNotFound: false, binderOptions); return; } throw new NotSupportedException($"Unable to bind to type '{type}': generator did not detect the type as input."); } public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Diagnostics.Enrichment.ApplicationLogEnricherOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Diagnostics.Enrichment.ApplicationLogEnricherOptions), s_configKeys_ApplicationLogEnricherOptions, configuration, binderOptions); if (configuration["EnvironmentName"] is string value7) { instance.EnvironmentName = ParseBool(value7, () => configuration.GetSection("EnvironmentName").Path); } else if (defaultValueIfNotFound) { instance.EnvironmentName = default; } if (configuration["ApplicationName"] is string value8) { instance.ApplicationName = ParseBool(value8, () => configuration.GetSection("ApplicationName").Path); } else if (defaultValueIfNotFound) { instance.ApplicationName = default; } if (configuration["DeploymentRing"] is string value9) { instance.DeploymentRing = ParseBool(value9, () => configuration.GetSection("DeploymentRing").Path); } else if (defaultValueIfNotFound) { instance.DeploymentRing = default; } if (configuration["BuildVersion"] is string value10) { instance.BuildVersion = ParseBool(value10, () => configuration.GetSection("BuildVersion").Path); } else if (defaultValueIfNotFound) { instance.BuildVersion = default; } } public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Diagnostics.Enrichment.ProcessLogEnricherOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Diagnostics.Enrichment.ProcessLogEnricherOptions), s_configKeys_ProcessLogEnricherOptions, configuration, binderOptions); if (configuration["ProcessId"] is string value11) { instance.ProcessId = ParseBool(value11, () => configuration.GetSection("ProcessId").Path); } else if (defaultValueIfNotFound) { instance.ProcessId = default; } if (configuration["ThreadId"] is string value12) { instance.ThreadId = ParseBool(value12, () => configuration.GetSection("ThreadId").Path); } else if (defaultValueIfNotFound) { instance.ThreadId = default; } } public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Diagnostics.Latency.LatencyConsoleOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Diagnostics.Latency.LatencyConsoleOptions), s_configKeys_LatencyConsoleOptions, configuration, binderOptions); if (configuration["OutputCheckpoints"] is string value13) { instance.OutputCheckpoints = ParseBool(value13, () => configuration.GetSection("OutputCheckpoints").Path); } else if (defaultValueIfNotFound) { instance.OutputCheckpoints = default; } if (configuration["OutputTags"] is string value14) { instance.OutputTags = ParseBool(value14, () => configuration.GetSection("OutputTags").Path); } else if (defaultValueIfNotFound) { instance.OutputTags = default; } if (configuration["OutputMeasures"] is string value15) { instance.OutputMeasures = ParseBool(value15, () => configuration.GetSection("OutputMeasures").Path); } else if (defaultValueIfNotFound) { instance.OutputMeasures = default; } } public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Diagnostics.Latency.LatencyContextOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Diagnostics.Latency.LatencyContextOptions), s_configKeys_LatencyContextOptions, configuration, binderOptions); if (configuration["ThrowOnUnregisteredNames"] is string value16) { instance.ThrowOnUnregisteredNames = ParseBool(value16, () => configuration.GetSection("ThrowOnUnregisteredNames").Path); } else if (defaultValueIfNotFound) { instance.ThrowOnUnregisteredNames = default; } } public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Logging.LoggerEnrichmentOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Logging.LoggerEnrichmentOptions), s_configKeys_LoggerEnrichmentOptions, configuration, binderOptions); if (configuration["CaptureStackTraces"] is string value17) { instance.CaptureStackTraces = ParseBool(value17, () => configuration.GetSection("CaptureStackTraces").Path); } else if (defaultValueIfNotFound) { instance.CaptureStackTraces = default; } if (configuration["UseFileInfoForStackTraces"] is string value18) { instance.UseFileInfoForStackTraces = ParseBool(value18, () => configuration.GetSection("UseFileInfoForStackTraces").Path); } else if (defaultValueIfNotFound) { instance.UseFileInfoForStackTraces = default; } if (configuration["IncludeExceptionMessage"] is string value19) { instance.IncludeExceptionMessage = ParseBool(value19, () => configuration.GetSection("IncludeExceptionMessage").Path); } else if (defaultValueIfNotFound) { instance.IncludeExceptionMessage = default; } if (configuration["MaxStackTraceLength"] is string value20) { instance.MaxStackTraceLength = ParseInt(value20, () => configuration.GetSection("MaxStackTraceLength").Path); } else if (defaultValueIfNotFound) { instance.MaxStackTraceLength = default; } } public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Logging.LoggerRedactionOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Logging.LoggerRedactionOptions), s_configKeys_LoggerRedactionOptions, configuration, binderOptions); if (configuration["ApplyDiscriminator"] is string value21) { instance.ApplyDiscriminator = ParseBool(value21, () => configuration.GetSection("ApplyDiscriminator").Path); } else if (defaultValueIfNotFound) { instance.ApplyDiscriminator = default; } } public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule), s_configKeys_RandomProbabilisticSamplerFilterRule, configuration, binderOptions); } public static void BindCore(IConfiguration configuration, ref global::System.Collections.Generic.IList<global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule> instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { foreach (IConfigurationSection section in configuration.GetChildren()) { var value = InitializeRandomProbabilisticSamplerFilterRule(section, binderOptions); BindCore(section, ref value, defaultValueIfNotFound: false, binderOptions); instance.Add(value); } } public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions) { ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerOptions), s_configKeys_RandomProbabilisticSamplerOptions, configuration, binderOptions); if (AsConfigWithChildren(configuration.GetSection("Rules")) is IConfigurationSection section23) { global::System.Collections.Generic.IList<global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule>? temp25 = instance.Rules; temp25 ??= (global::System.Collections.Generic.IList<global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule>)new List<global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule>(); BindCore(section23, ref temp25, defaultValueIfNotFound: false, binderOptions); instance.Rules = temp25; } } public static global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule InitializeRandomProbabilisticSamplerFilterRule(IConfiguration configuration, BinderOptions? binderOptions) { double probability = default; if (configuration["Probability"] is string value26) { probability = ParseDouble(value26, () => configuration.GetSection("Probability").Path); } else { throw new InvalidOperationException("Cannot create instance of type 'Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule' because parameter 'probability' has no matching config. Each parameter in the constructor that does not have a default value must have a corresponding config entry."); } string categoryName = default(string)!; if (configuration["CategoryName"] is string value27) { categoryName = value27; } global::Microsoft.Extensions.Logging.LogLevel? logLevel = default(global::Microsoft.Extensions.Logging.LogLevel?); if (configuration["LogLevel"] is string value28) { logLevel = ParseEnum<global::Microsoft.Extensions.Logging.LogLevel>(value28, () => configuration.GetSection("LogLevel").Path); } int? eventId = default(int?); if (configuration["EventId"] is string value29) { eventId = ParseInt(value29, () => configuration.GetSection("EventId").Path); } string eventName = default(string)!; if (configuration["EventName"] is string value30) { eventName = value30; } return new global::Microsoft.Extensions.Diagnostics.Sampling.RandomProbabilisticSamplerFilterRule(probability, categoryName, logLevel, eventId, eventName); } /// <summary>If required by the binder options, validates that there are no unknown keys in the input configuration object.</summary> public static void ValidateConfigurationKeys(Type type, Lazy<HashSet<string>> keys, IConfiguration configuration, BinderOptions? binderOptions) { if (binderOptions?.ErrorOnUnknownConfiguration is true) { List<string>? temp = null; foreach (IConfigurationSection section in configuration.GetChildren()) { if (!keys.Value.Contains(section.Key)) { (temp ??= new List<string>()).Add($"'{section.Key}'"); } } if (temp is not null) { throw new InvalidOperationException($"'ErrorOnUnknownConfiguration' was set on the provided BinderOptions, but the following properties were not found on the instance of {type}: {string.Join(", ", temp)}"); } } } public static bool HasValueOrChildren(IConfiguration configuration) { if ((configuration as IConfigurationSection)?.Value is not null) { return true; } return AsConfigWithChildren(configuration) is not null; } public static IConfiguration? AsConfigWithChildren(IConfiguration configuration) { foreach (IConfigurationSection _ in configuration.GetChildren()) { return configuration; } return null; } public static BinderOptions? GetBinderOptions(Action<BinderOptions>? configureOptions) { if (configureOptions is null) { return null; } BinderOptions binderOptions = new(); configureOptions(binderOptions); if (binderOptions.BindNonPublicProperties) { throw new NotSupportedException($"The configuration binding source generator does not support 'BinderOptions.BindNonPublicProperties'."); } return binderOptions; } public static bool ParseBool(string value, Func<string?> getPath) { try { return bool.Parse(value); } catch (Exception exception) { throw new InvalidOperationException($"Failed to convert configuration value at '{getPath()}' to type '{typeof(bool)}'.", exception); } } public static int ParseInt(string value, Func<string?> getPath) { try { return int.Parse(value, NumberStyles.Integer, CultureInfo.InvariantCulture); } catch (Exception exception) { throw new InvalidOperationException($"Failed to convert configuration value at '{getPath()}' to type '{typeof(int)}'.", exception); } } public static double ParseDouble(string value, Func<string?> getPath) { try { return double.Parse(value, NumberStyles.Float, CultureInfo.InvariantCulture); } catch (Exception exception) { throw new InvalidOperationException($"Failed to convert configuration value at '{getPath()}' to type '{typeof(double)}'.", exception); } } public static T ParseEnum<T>(string value, Func<string?> getPath) where T : struct { try { #if NETFRAMEWORK || NETSTANDARD2_0 return (T)Enum.Parse(typeof(T), value, ignoreCase: true); #else return Enum.Parse<T>(value, ignoreCase: true); #endif } catch (Exception exception) { throw new InvalidOperationException($"Failed to convert configuration value at '{getPath()}' to type '{typeof(T)}'.", exception); } } #endregion Core binding extensions. } }