Add project files.

This commit is contained in:
2024-08-16 11:24:48 +02:00
parent 6e24754b23
commit 6e4501f373
22 changed files with 682 additions and 0 deletions
@@ -0,0 +1,34 @@
using AspNetCore.Extensions.Attributes;
using System.Core.Extensions;
using System.Extensions;
namespace AspNetCore.Extensions;
public static class WebApplicationBuilderExtensions
{
public static WebApplicationBuilder ConfigureExtended<TOptions>(this WebApplicationBuilder builder)
where TOptions : class, new()
{
builder.ThrowIfNull()
.Services.Configure<TOptions>(builder.Configuration.GetSection(GetOptionsName<TOptions>()));
return builder;
}
public static IConfigurationSection GetRequiredSection<TOptions>(this ConfigurationManager configurationManager)
{
configurationManager.ThrowIfNull();
return configurationManager.GetRequiredSection(GetOptionsName<TOptions>());
}
private static string GetOptionsName<TOptions>()
{
var maybeAttribute = typeof(TOptions).GetCustomAttributes(false).OfType<OptionsNameAttribute>().FirstOrDefault();
if (maybeAttribute is not null &&
maybeAttribute.Name?.IsNullOrWhiteSpace() is false)
{
return maybeAttribute.Name;
}
return typeof(TOptions).Name;
}
}