Source-generated configuration keys from your appsettings.json
Install the package
dotnet add package Lemworks.Generators.ConfigurationAdd the following to your .csproj file
<ItemGroup>
<AdditionalFiles Include="appsettings.json" />
<Content Include="appsettings.json" CopyToOutputDirectory="Always" /> <!-- Not needed in Web projects -->
</ItemGroup>Create an appsettings.json file with some content
{
"ConnectionStrings": {
"SqlServer": "Server=(localdb)\\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning"
}
}
}The keys will be generated as const strings in a AppSettings class
using System;
namespace Generated.Configuration
{
public static class AppSettings
{
public static class ConnectionStrings
{
public const string SqlServer = "ConnectionStrings:SqlServer";
}
public static class Logging
{
public static class LogLevel
{
public const string Default = "Logging:LogLevel:Default";
public const string Microsoft = "Logging:LogLevel:Microsoft";
}
}
}
}Use the keys in your code like this
using Generated.Configuration;
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
configuration.GetConnectionString(AppSettings.ConnectionStrings.SqlServer) // "Server=(localdb)\\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True"
configuration[AppSettings.Logging.LogLevel.Default] // "Information"
configuration[AppSettings.Logging.LogLevel.Microsoft] // "Warning"