diff --git a/DigitalData.Core.Abstractions/ConfigurationExtension.cs b/DigitalData.Core.Abstractions/ConfigurationExtension.cs new file mode 100644 index 0000000..5515124 --- /dev/null +++ b/DigitalData.Core.Abstractions/ConfigurationExtension.cs @@ -0,0 +1,30 @@ +using Microsoft.Extensions.Configuration; + +namespace DigitalData.Core.Abstractions +{ + /// + /// Extension methods for the interface, providing + /// additional functionality for retrieving configuration values with default behavior. + /// + public static class ConfigurationExtension + { + /// + /// Retrieves a configuration value for the specified key, or returns a default value + /// of type if the configuration is not found or the key is null. + /// + /// The type of the object to retrieve from the configuration. + /// The instance. + /// The optional key to look for in the configuration. If null, the method + /// retrieves the root configuration. + /// + /// An instance of populated from the configuration values, or + /// a new instance of if no matching configuration is found. + /// + public static T GetOrDefault(this IConfiguration configuration, string? key = null) + where T : new() + => (key is null + ? configuration.Get() + : configuration.GetSection(key).Get()) + ?? new T(); + } +} diff --git a/DigitalData.Core.Abstractions/DigitalData.Core.Abstractions.csproj b/DigitalData.Core.Abstractions/DigitalData.Core.Abstractions.csproj index c6579bd..fdb87d2 100644 --- a/DigitalData.Core.Abstractions/DigitalData.Core.Abstractions.csproj +++ b/DigitalData.Core.Abstractions/DigitalData.Core.Abstractions.csproj @@ -17,9 +17,9 @@ http://git.dd:3000/AppStd/WebCoreModules.git False core_icon.png - 3.4.4 - 3.4.4 - 3.4.4 + 3.5.0 + 3.5.0 + 3.5.0