mirror of
https://github.com/AlexMacocian/Net.Sdk.Web.Extensions.git
synced 2026-07-22 16:59:30 +00:00
Add project files.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user