feat: upgrade application to .NET 10
All checks were successful
Caddy Manager CI build / docker (push) Successful in 6m37s

Preserve configuration defaults with the .NET 10 binder and update
dependencies, Docker builds, CI, and test tooling.
This commit is contained in:
2026-07-26 15:55:11 +07:00
parent b5cbad3664
commit 7380680230
13 changed files with 298 additions and 494 deletions

View File

@@ -19,6 +19,18 @@ public class ConfigurationsService(IConfiguration configuration) : IConfiguratio
else if (section.EndsWith("Configuration"))
section = section[..^"Configuration".Length];
return configuration.GetSection(section).Get<T>() ?? Activator.CreateInstance<T>();
var result = configuration.GetSection(section).Get<T>();
var defaults = Activator.CreateInstance<T>();
if (result is null) return defaults;
// The .NET 10 binder writes nulls over property initialisers, so put the defaults back
foreach (var property in typeof(T).GetProperties())
{
if (property is { CanRead: true, CanWrite: true } && property.GetValue(result) is null)
property.SetValue(result, property.GetValue(defaults));
}
return result;
}
}