Skip to content

ASP.NET 8.0 Service utilized to bind ApplicationConfiguration section of configuration environment into a custom class for dependency injection

License

Notifications You must be signed in to change notification settings

cdcavell/ApplicationConfiguration

Repository files navigation

ApplicationConfiguration

ASP.NET 8.0 Service utilized to bind ApplicationConfiguration section of configuration environment into a custom class for dependency injection


GitHub license GitHub top language GitHub language count


ApplicationConfiguration is a .Net 8.0 Service utilized to bind ApplicationConfiguration section of configuration environment into a custom class for dependency injection.

Target Framework is ASP.NET Core 8.0. Developed and built in a Windows environment utilizing Visual Studio Community 2022 source-code editor.

This work is licensed under the MIT License. Assets are licensed under their respective licensing.


To utilize, add following to Program.cs where AppConfig is custom class to bind ApplicationConfiguration section to:

    private static AppConfig? _applicationConfiguration;

    ...

    var builder = WebApplication.CreateBuilder(args);

    _applicationConfiguration = new(builder.Configuration);
    builder.Services.AddApplicationConfigurationService(options =>
    {
        options.ApplicationConfiguration = _applicationConfiguration;
    });

Example of custom class (requires IConfiguration passed into constructor):

    public class AppConfig(IConfiguration configuration) : ApplicationConfiguration.Models.ApplicationConfiguration(configuration)
    {
    }

If configuration environment has sections under ApplicationConfiguration section, then each section is it's own class within custom class. Example:

    public class AppConfig(IConfiguration configuration) : ApplicationConfiguration.Models.ApplicationConfiguration(configuration)
    {
        public ConnectionStrings ConnectionStrings { get; set; } = new();
    }
    public class ConnectionStrings
    {
        public string ApplicationDbConnection { get; set; } = string.Empty;
    }

Custom class can now be utilized in dependency injection:

    public abstract class ApplicationBaseController<T>(
        ILogger<T> logger,
        IApplicationConfigurationService applicationConfigurationService
    ) : WebBaseController<ApplicationBaseController<T>>(logger) where T : ApplicationBaseController<T>
    {
        protected readonly AppConfig _applicationConfiguration = applicationConfigurationService.ToObject<AppConfig>();
    }

Authenticate to GitHub Packages:
Replace USERNAME with your GitHub User Name
Replace YOUR_GITHUB_PAT with your personal access token
Replace NAMESPACE with the name of the personal account or organization to which your packages are scoped

> dotnet nuget add source --username USERNAME --password YOUR_GITHUB_PAT --store-password-in-clear-text --name github "https://nuget.pkg.github.com/NAMESPACE/index.json"

Publish Package:
Replace PACKAGE with your NuGet Package Name
Replace YOUR_GITHUB_PAT with your personal access token

> dotnet nuget push "bin/Release/PACKAGE.nupkg"  --api-key YOUR_GITHUB_PAT --source "github"

About

ASP.NET 8.0 Service utilized to bind ApplicationConfiguration section of configuration environment into a custom class for dependency injection

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages