ASP.NET 8.0 Service utilized to bind ApplicationConfiguration section of configuration environment into a custom class for dependency injection
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"