File: _generated\0\BindingExtensions.g.cs
Web Access
Project: src\src\runtime\src\libraries\Microsoft.Extensions.Logging.Console\src\Microsoft.Extensions.Logging.Console.csproj (Microsoft.Extensions.Logging.Console)
// <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", "11.0.14.26904")]
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
    file sealed class InterceptsLocationAttribute : Attribute
    {
        public InterceptsLocationAttribute(int version, string data)
        {
        }
    }
}

namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration
{
    using Microsoft.Extensions.Configuration;
    using System;
    using System.CodeDom.Compiler;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Runtime.CompilerServices;

    [GeneratedCode("Microsoft.Extensions.Configuration.Binder.SourceGeneration", "11.0.14.26904")]
    file static class BindingExtensions
    {
        #region IConfiguration extensions.
        /// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
        [InterceptsLocation(1, "FLvuqE+ZU/pPm7h9ldBsWk8GAABDb25zb2xlRm9ybWF0dGVyT3B0aW9ucy5jcw==")] // /_/src/runtime/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleFormatterOptions.cs(44,88)
        public static void Bind_Microsoft__Extensions__Logging__Console__ConsoleFormatterOptions(this IConfiguration configuration, object? instance)
        {
            ArgumentNullException.ThrowIfNull(configuration);

            if (instance is null)
            {
                return;
            }

            var typedObj = (global::Microsoft.Extensions.Logging.Console.ConsoleFormatterOptions)instance;
            BindCore(configuration, ref typedObj, defaultValueIfNotFound: false, binderOptions: null);
        }

        /// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
        [InterceptsLocation(1, "n9qAj521Aa28cnQwhHS/DKEEAABDb25zb2xlTG9nZ2VyQ29uZmlndXJlT3B0aW9ucy5jcw==")] // /_/src/runtime/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerConfigureOptions.cs(29,79)
        [InterceptsLocation(1, "4WjnScYoIL3c4qEHe7XxrD8gAABDb25zb2xlTG9nZ2VyRXh0ZW5zaW9ucy5PYnNvbGV0ZS5jcw==")] // /_/src/runtime/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerExtensions.Obsolete.cs(146,51)
        public static void Bind_Microsoft__Extensions__Logging__Console__ConsoleLoggerOptions(this IConfiguration configuration, object? instance)
        {
            ArgumentNullException.ThrowIfNull(configuration);

            if (instance is null)
            {
                return;
            }

            var typedObj = (global::Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions)instance;
            BindCore(configuration, ref typedObj, defaultValueIfNotFound: false, binderOptions: null);
        }

        /// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
        [InterceptsLocation(1, "zBXcrRGCdMDRHb4ixbzXCaQDAABKc29uQ29uc29sZUZvcm1hdHRlck9wdGlvbnMuY3M=")] // /_/src/runtime/src/libraries/Microsoft.Extensions.Logging.Console/src/JsonConsoleFormatterOptions.cs(26,89)
        public static void Bind_Microsoft__Extensions__Logging__Console__JsonConsoleFormatterOptions(this IConfiguration configuration, object? instance)
        {
            ArgumentNullException.ThrowIfNull(configuration);

            if (instance is null)
            {
                return;
            }

            var typedObj = (global::Microsoft.Extensions.Logging.Console.JsonConsoleFormatterOptions)instance;
            BindCore(configuration, ref typedObj, defaultValueIfNotFound: false, binderOptions: null);
        }

        /// <summary>Attempts to bind the given object instance to configuration values by matching property names against configuration keys recursively.</summary>
        [InterceptsLocation(1, "6TCFETx0wqnkAtn13yhAHsAEAABTaW1wbGVDb25zb2xlRm9ybWF0dGVyT3B0aW9ucy5jcw==")] // /_/src/runtime/src/libraries/Microsoft.Extensions.Logging.Console/src/SimpleConsoleFormatterOptions.cs(31,89)
        public static void Bind_Microsoft__Extensions__Logging__Console__SimpleConsoleFormatterOptions(this IConfiguration configuration, object? instance)
        {
            ArgumentNullException.ThrowIfNull(configuration);

            if (instance is null)
            {
                return;
            }

            var typedObj = (global::Microsoft.Extensions.Logging.Console.SimpleConsoleFormatterOptions)instance;
            BindCore(configuration, ref typedObj, defaultValueIfNotFound: false, binderOptions: null);
        }
        #endregion IConfiguration extensions.

        #region Core binding extensions.
        private readonly static Lazy<global::System.Collections.Generic.HashSet<string>> s_configKeys_Microsoft__Extensions__Logging__Console__ConsoleFormatterOptions = new(() => new global::System.Collections.Generic.HashSet<string>(StringComparer.OrdinalIgnoreCase) { "IncludeScopes", "TimestampFormat", "UseUtcTimestamp" });
        private readonly static Lazy<global::System.Collections.Generic.HashSet<string>> s_configKeys_Microsoft__Extensions__Logging__Console__ConsoleLoggerOptions = new(() => new global::System.Collections.Generic.HashSet<string>(StringComparer.OrdinalIgnoreCase) { "DisableColors", "Format", "FormatterName", "IncludeScopes", "LogToStandardErrorThreshold", "TimestampFormat", "UseUtcTimestamp", "QueueFullMode", "MaxQueueLength" });
        private readonly static Lazy<global::System.Collections.Generic.HashSet<string>> s_configKeys_System__Text__Encodings__Web__JavaScriptEncoder = new(() => new global::System.Collections.Generic.HashSet<string>(StringComparer.OrdinalIgnoreCase) { "Default", "UnsafeRelaxedJsonEscaping", "MaxOutputCharactersPerInputCharacter" });
        private readonly static Lazy<global::System.Collections.Generic.HashSet<string>> s_configKeys_System__Text__Json__JsonWriterOptions = new(() => new global::System.Collections.Generic.HashSet<string>(StringComparer.OrdinalIgnoreCase) { "Encoder", "Indented", "IndentCharacter", "IndentSize", "NewLine", "MaxDepth", "SkipValidation" });
        private readonly static Lazy<global::System.Collections.Generic.HashSet<string>> s_configKeys_Microsoft__Extensions__Logging__Console__JsonConsoleFormatterOptions = new(() => new global::System.Collections.Generic.HashSet<string>(StringComparer.OrdinalIgnoreCase) { "JsonWriterOptions", "IncludeScopes", "TimestampFormat", "UseUtcTimestamp" });
        private readonly static Lazy<global::System.Collections.Generic.HashSet<string>> s_configKeys_Microsoft__Extensions__Logging__Console__SimpleConsoleFormatterOptions = new(() => new global::System.Collections.Generic.HashSet<string>(StringComparer.OrdinalIgnoreCase) { "ColorBehavior", "SingleLine", "IncludeScopes", "TimestampFormat", "UseUtcTimestamp" });

        public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Logging.Console.ConsoleFormatterOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions)
        {
            ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Logging.Console.ConsoleFormatterOptions), s_configKeys_Microsoft__Extensions__Logging__Console__ConsoleFormatterOptions, configuration, binderOptions);

            if (TryGetConfigurationValue(configuration, key: "IncludeScopes", out string? value0))
            {
                if (!string.IsNullOrEmpty(value0))
                {
                    instance.IncludeScopes = ParseBool(value0, configuration.GetSection("IncludeScopes").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.IncludeScopes = instance.IncludeScopes;
            }

            if (TryGetConfigurationValue(configuration, key: "TimestampFormat", out string? value1))
            {
                instance.TimestampFormat = value1;
            }
            else if (defaultValueIfNotFound)
            {
                var currentValue = instance.TimestampFormat;
                if (currentValue is not null)
                {
                    instance.TimestampFormat = currentValue;
                }
            }

            if (TryGetConfigurationValue(configuration, key: "UseUtcTimestamp", out string? value2))
            {
                if (!string.IsNullOrEmpty(value2))
                {
                    instance.UseUtcTimestamp = ParseBool(value2, configuration.GetSection("UseUtcTimestamp").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.UseUtcTimestamp = instance.UseUtcTimestamp;
            }
        }

        public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions)
        {
            ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions), s_configKeys_Microsoft__Extensions__Logging__Console__ConsoleLoggerOptions, configuration, binderOptions);

            if (TryGetConfigurationValue(configuration, key: "DisableColors", out string? value3))
            {
                if (!string.IsNullOrEmpty(value3))
                {
                    instance.DisableColors = ParseBool(value3, configuration.GetSection("DisableColors").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.DisableColors = instance.DisableColors;
            }

            if (TryGetConfigurationValue(configuration, key: "Format", out string? value4))
            {
                if (!string.IsNullOrEmpty(value4))
                {
                    instance.Format = ParseEnum<global::Microsoft.Extensions.Logging.Console.ConsoleLoggerFormat>(value4, configuration.GetSection("Format").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.Format = instance.Format;
            }

            if (TryGetConfigurationValue(configuration, key: "FormatterName", out string? value5))
            {
                instance.FormatterName = value5;
            }
            else if (defaultValueIfNotFound)
            {
                var currentValue = instance.FormatterName;
                if (currentValue is not null)
                {
                    instance.FormatterName = currentValue;
                }
            }

            if (TryGetConfigurationValue(configuration, key: "IncludeScopes", out string? value6))
            {
                if (!string.IsNullOrEmpty(value6))
                {
                    instance.IncludeScopes = ParseBool(value6, configuration.GetSection("IncludeScopes").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.IncludeScopes = instance.IncludeScopes;
            }

            if (TryGetConfigurationValue(configuration, key: "LogToStandardErrorThreshold", out string? value7))
            {
                if (!string.IsNullOrEmpty(value7))
                {
                    instance.LogToStandardErrorThreshold = ParseEnum<global::Microsoft.Extensions.Logging.LogLevel>(value7, configuration.GetSection("LogToStandardErrorThreshold").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.LogToStandardErrorThreshold = instance.LogToStandardErrorThreshold;
            }

            if (TryGetConfigurationValue(configuration, key: "TimestampFormat", out string? value8))
            {
                instance.TimestampFormat = value8;
            }
            else if (defaultValueIfNotFound)
            {
                var currentValue = instance.TimestampFormat;
                if (currentValue is not null)
                {
                    instance.TimestampFormat = currentValue;
                }
            }

            if (TryGetConfigurationValue(configuration, key: "UseUtcTimestamp", out string? value9))
            {
                if (!string.IsNullOrEmpty(value9))
                {
                    instance.UseUtcTimestamp = ParseBool(value9, configuration.GetSection("UseUtcTimestamp").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.UseUtcTimestamp = instance.UseUtcTimestamp;
            }

            if (TryGetConfigurationValue(configuration, key: "QueueFullMode", out string? value10))
            {
                if (!string.IsNullOrEmpty(value10))
                {
                    instance.QueueFullMode = ParseEnum<global::Microsoft.Extensions.Logging.Console.ConsoleLoggerQueueFullMode>(value10, configuration.GetSection("QueueFullMode").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.QueueFullMode = instance.QueueFullMode;
            }

            if (TryGetConfigurationValue(configuration, key: "MaxQueueLength", out string? value11))
            {
                if (!string.IsNullOrEmpty(value11))
                {
                    instance.MaxQueueLength = ParseInt(value11, configuration.GetSection("MaxQueueLength").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.MaxQueueLength = instance.MaxQueueLength;
            }
        }

        public static void BindCore(IConfiguration configuration, ref global::System.Text.Encodings.Web.JavaScriptEncoder instance, bool defaultValueIfNotFound, BinderOptions? binderOptions)
        {
            ValidateConfigurationKeys(typeof(global::System.Text.Encodings.Web.JavaScriptEncoder), s_configKeys_System__Text__Encodings__Web__JavaScriptEncoder, configuration, binderOptions);

            var value12 = configuration.GetSection("Default");
            if (AsConfigWithChildren(value12) is IConfigurationSection section13)
            {
                global::System.Text.Encodings.Web.JavaScriptEncoder? temp15 = global::System.Text.Encodings.Web.JavaScriptEncoder.Default;
                if (temp15 is not null)
                {
                    BindCore(section13, ref temp15, defaultValueIfNotFound: false, binderOptions);
                }
                else
                {
                    throw new InvalidOperationException("Cannot create instance of type 'System.Text.Encodings.Web.JavaScriptEncoder' because it is missing a public instance constructor.");
                }
            }

            var value16 = configuration.GetSection("UnsafeRelaxedJsonEscaping");
            if (AsConfigWithChildren(value16) is IConfigurationSection section17)
            {
                global::System.Text.Encodings.Web.JavaScriptEncoder? temp19 = global::System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
                if (temp19 is not null)
                {
                    BindCore(section17, ref temp19, defaultValueIfNotFound: false, binderOptions);
                }
                else
                {
                    throw new InvalidOperationException("Cannot create instance of type 'System.Text.Encodings.Web.JavaScriptEncoder' because it is missing a public instance constructor.");
                }
            }
        }

        public static void BindCore(IConfiguration configuration, ref global::System.Text.Json.JsonWriterOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions)
        {
            ValidateConfigurationKeys(typeof(global::System.Text.Json.JsonWriterOptions), s_configKeys_System__Text__Json__JsonWriterOptions, configuration, binderOptions);

            var value20 = configuration.GetSection("Encoder");
            if (AsConfigWithChildren(value20) is IConfigurationSection section21)
            {
                global::System.Text.Encodings.Web.JavaScriptEncoder? temp23 = instance.Encoder;
                if (temp23 is not null)
                {
                    BindCore(section21, ref temp23, defaultValueIfNotFound: false, binderOptions);
                    instance.Encoder = temp23;
                }
                else
                {
                    throw new InvalidOperationException("Cannot create instance of type 'System.Text.Encodings.Web.JavaScriptEncoder' because it is missing a public instance constructor.");
                }
            }

            if (TryGetConfigurationValue(configuration, key: "Indented", out string? value24))
            {
                if (!string.IsNullOrEmpty(value24))
                {
                    instance.Indented = ParseBool(value24, configuration.GetSection("Indented").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.Indented = instance.Indented;
            }

            if (TryGetConfigurationValue(configuration, key: "IndentCharacter", out string? value25))
            {
                if (!string.IsNullOrEmpty(value25))
                {
                    instance.IndentCharacter = ParseChar(value25, configuration.GetSection("IndentCharacter").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.IndentCharacter = instance.IndentCharacter;
            }

            if (TryGetConfigurationValue(configuration, key: "IndentSize", out string? value26))
            {
                if (!string.IsNullOrEmpty(value26))
                {
                    instance.IndentSize = ParseInt(value26, configuration.GetSection("IndentSize").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.IndentSize = instance.IndentSize;
            }

            if (TryGetConfigurationValue(configuration, key: "NewLine", out string? value27))
            {
                instance.NewLine = value27;
            }
            else if (defaultValueIfNotFound)
            {
                var currentValue = instance.NewLine;
                if (currentValue is not null)
                {
                    instance.NewLine = currentValue;
                }
            }

            if (TryGetConfigurationValue(configuration, key: "MaxDepth", out string? value28))
            {
                if (!string.IsNullOrEmpty(value28))
                {
                    instance.MaxDepth = ParseInt(value28, configuration.GetSection("MaxDepth").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.MaxDepth = instance.MaxDepth;
            }

            if (TryGetConfigurationValue(configuration, key: "SkipValidation", out string? value29))
            {
                if (!string.IsNullOrEmpty(value29))
                {
                    instance.SkipValidation = ParseBool(value29, configuration.GetSection("SkipValidation").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.SkipValidation = instance.SkipValidation;
            }
        }

        public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Logging.Console.JsonConsoleFormatterOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions)
        {
            ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Logging.Console.JsonConsoleFormatterOptions), s_configKeys_Microsoft__Extensions__Logging__Console__JsonConsoleFormatterOptions, configuration, binderOptions);

            var value30 = configuration.GetSection("JsonWriterOptions");
            if (AsConfigWithChildren(value30) is IConfigurationSection section31)
            {
                global::System.Text.Json.JsonWriterOptions temp32 = instance.JsonWriterOptions;
                var temp33 = new global::System.Text.Json.JsonWriterOptions();
                BindCore(section31, ref temp33, defaultValueIfNotFound: false, binderOptions);
                instance.JsonWriterOptions = temp33;
                temp32 = temp33;
            }
            else
            {
                instance.JsonWriterOptions = instance.JsonWriterOptions;
            }

            if (TryGetConfigurationValue(configuration, key: "IncludeScopes", out string? value34))
            {
                if (!string.IsNullOrEmpty(value34))
                {
                    instance.IncludeScopes = ParseBool(value34, configuration.GetSection("IncludeScopes").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.IncludeScopes = instance.IncludeScopes;
            }

            if (TryGetConfigurationValue(configuration, key: "TimestampFormat", out string? value35))
            {
                instance.TimestampFormat = value35;
            }
            else if (defaultValueIfNotFound)
            {
                var currentValue = instance.TimestampFormat;
                if (currentValue is not null)
                {
                    instance.TimestampFormat = currentValue;
                }
            }

            if (TryGetConfigurationValue(configuration, key: "UseUtcTimestamp", out string? value36))
            {
                if (!string.IsNullOrEmpty(value36))
                {
                    instance.UseUtcTimestamp = ParseBool(value36, configuration.GetSection("UseUtcTimestamp").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.UseUtcTimestamp = instance.UseUtcTimestamp;
            }
        }

        public static void BindCore(IConfiguration configuration, ref global::Microsoft.Extensions.Logging.Console.SimpleConsoleFormatterOptions instance, bool defaultValueIfNotFound, BinderOptions? binderOptions)
        {
            ValidateConfigurationKeys(typeof(global::Microsoft.Extensions.Logging.Console.SimpleConsoleFormatterOptions), s_configKeys_Microsoft__Extensions__Logging__Console__SimpleConsoleFormatterOptions, configuration, binderOptions);

            if (TryGetConfigurationValue(configuration, key: "ColorBehavior", out string? value37))
            {
                if (!string.IsNullOrEmpty(value37))
                {
                    instance.ColorBehavior = ParseEnum<global::Microsoft.Extensions.Logging.Console.LoggerColorBehavior>(value37, configuration.GetSection("ColorBehavior").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.ColorBehavior = instance.ColorBehavior;
            }

            if (TryGetConfigurationValue(configuration, key: "SingleLine", out string? value38))
            {
                if (!string.IsNullOrEmpty(value38))
                {
                    instance.SingleLine = ParseBool(value38, configuration.GetSection("SingleLine").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.SingleLine = instance.SingleLine;
            }

            if (TryGetConfigurationValue(configuration, key: "IncludeScopes", out string? value39))
            {
                if (!string.IsNullOrEmpty(value39))
                {
                    instance.IncludeScopes = ParseBool(value39, configuration.GetSection("IncludeScopes").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.IncludeScopes = instance.IncludeScopes;
            }

            if (TryGetConfigurationValue(configuration, key: "TimestampFormat", out string? value40))
            {
                instance.TimestampFormat = value40;
            }
            else if (defaultValueIfNotFound)
            {
                var currentValue = instance.TimestampFormat;
                if (currentValue is not null)
                {
                    instance.TimestampFormat = currentValue;
                }
            }

            if (TryGetConfigurationValue(configuration, key: "UseUtcTimestamp", out string? value41))
            {
                if (!string.IsNullOrEmpty(value41))
                {
                    instance.UseUtcTimestamp = ParseBool(value41, configuration.GetSection("UseUtcTimestamp").Path);
                }
            }
            else if (defaultValueIfNotFound)
            {
                instance.UseUtcTimestamp = instance.UseUtcTimestamp;
            }
        }

        /// <summary>Tries to get the configuration value for the specified key.</summary>
        public static bool TryGetConfigurationValue(IConfiguration configuration, string key, out string? value)
        {
            if (configuration is ConfigurationSection section)
            {
                return section.TryGetValue(key, out value);
            }
        
            value = key != null ? configuration[key] : configuration is IConfigurationSection sec ? sec.Value : null;
            return value != null;
        }


        /// <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<global::System.Collections.Generic.HashSet<string>> keys, IConfiguration configuration, BinderOptions? binderOptions)
        {
            if (binderOptions?.ErrorOnUnknownConfiguration is true)
            {
                global::System.Collections.Generic.List<string>? temp = null;
        
                foreach (IConfigurationSection section in configuration.GetChildren())
                {
                    if (!keys.Value.Contains(section.Key))
                    {
                        (temp ??= new global::System.Collections.Generic.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 IConfiguration? AsConfigWithChildren(IConfiguration configuration)
        {
            foreach (IConfigurationSection _ in configuration.GetChildren())
            {
                return configuration;
            }
            return null;
        }

        public static T ParseEnum<T>(string value, string? path) where T : struct
        {
            try
            {
                return Enum.Parse<T>(value, ignoreCase: true);
            }
            catch (Exception exception)
            {
                throw new InvalidOperationException($"Failed to convert configuration value '{value ?? "null"}' at '{path}' to type '{typeof(T)}'.", exception);
            }
        }

        public static bool ParseBool(string value, string? path)
        {
            try
            {
                return bool.Parse(value);
            }
            catch (Exception exception)
            {
                throw new InvalidOperationException($"Failed to convert configuration value '{value ?? "null"}' at '{path}' to type '{typeof(bool)}'.", exception);
            }
        }

        public static int ParseInt(string value, string? path)
        {
            try
            {
                return int.Parse(value, NumberStyles.Integer, CultureInfo.InvariantCulture);
            }
            catch (Exception exception)
            {
                throw new InvalidOperationException($"Failed to convert configuration value '{value ?? "null"}' at '{path}' to type '{typeof(int)}'.", exception);
            }
        }

        public static char ParseChar(string value, string? path)
        {
            try
            {
                return char.Parse(value);
            }
            catch (Exception exception)
            {
                throw new InvalidOperationException($"Failed to convert configuration value '{value ?? "null"}' at '{path}' to type '{typeof(char)}'.", exception);
            }
        }
        #endregion Core binding extensions.
    }
}