Refactored the initialization of settings and started a json schema project
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
@@ -11,12 +13,25 @@ namespace Umbraco.Cms.Core.DependencyInjection
|
||||
public static partial class UmbracoBuilderExtensions
|
||||
{
|
||||
|
||||
private static OptionsBuilder<TOptions> AddOptions<TOptions>(IUmbracoBuilder builder, string key)
|
||||
private static IUmbracoBuilder AddUmbracoOptions<TOptions>(this IUmbracoBuilder builder)
|
||||
where TOptions : class
|
||||
=> builder.Services.AddOptions<TOptions>()
|
||||
.Bind(builder.Config.GetSection(key))
|
||||
{
|
||||
var umbracoOptionsAttribute = typeof(TOptions).GetCustomAttribute<UmbracoOptionsAttribute>();
|
||||
|
||||
if (umbracoOptionsAttribute is null)
|
||||
{
|
||||
throw new ArgumentException("typeof(TOptions) do not have the UmbracoOptionsAttribute");
|
||||
}
|
||||
|
||||
|
||||
builder.Services.AddOptions<TOptions>()
|
||||
.Bind(builder.Config.GetSection(umbracoOptionsAttribute.ConfigurationKey),
|
||||
o => o.BindNonPublicProperties = umbracoOptionsAttribute.BindNonPublicProperties)
|
||||
.ValidateDataAnnotations();
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add Umbraco configuration services and options
|
||||
/// </summary>
|
||||
@@ -30,34 +45,33 @@ namespace Umbraco.Cms.Core.DependencyInjection
|
||||
builder.Services.AddSingleton<IValidateOptions<UnattendedSettings>, UnattendedSettingsValidator>();
|
||||
|
||||
// Register configuration sections.
|
||||
|
||||
builder.Services.Configure<ModelsBuilderSettings>(builder.Config.GetSection(Constants.Configuration.ConfigModelsBuilder), o => o.BindNonPublicProperties = true);
|
||||
builder.Services.Configure<ConnectionStrings>(builder.Config.GetSection("ConnectionStrings"), o => o.BindNonPublicProperties = true);
|
||||
|
||||
AddOptions<ActiveDirectorySettings>(builder, Constants.Configuration.ConfigActiveDirectory);
|
||||
AddOptions<ContentSettings>(builder, Constants.Configuration.ConfigContent);
|
||||
AddOptions<CoreDebugSettings>(builder, Constants.Configuration.ConfigCoreDebug);
|
||||
AddOptions<ExceptionFilterSettings>(builder, Constants.Configuration.ConfigExceptionFilter);
|
||||
AddOptions<GlobalSettings>(builder, Constants.Configuration.ConfigGlobal);
|
||||
AddOptions<HealthChecksSettings>(builder, Constants.Configuration.ConfigHealthChecks);
|
||||
AddOptions<HostingSettings>(builder, Constants.Configuration.ConfigHosting);
|
||||
AddOptions<ImagingSettings>(builder, Constants.Configuration.ConfigImaging);
|
||||
AddOptions<IndexCreatorSettings>(builder, Constants.Configuration.ConfigExamine);
|
||||
AddOptions<KeepAliveSettings>(builder, Constants.Configuration.ConfigKeepAlive);
|
||||
AddOptions<LoggingSettings>(builder, Constants.Configuration.ConfigLogging);
|
||||
AddOptions<MemberPasswordConfigurationSettings>(builder, Constants.Configuration.ConfigMemberPassword);
|
||||
AddOptions<NuCacheSettings>(builder, Constants.Configuration.ConfigNuCache);
|
||||
AddOptions<RequestHandlerSettings>(builder, Constants.Configuration.ConfigRequestHandler);
|
||||
AddOptions<RuntimeSettings>(builder, Constants.Configuration.ConfigRuntime);
|
||||
AddOptions<SecuritySettings>(builder, Constants.Configuration.ConfigSecurity);
|
||||
AddOptions<TourSettings>(builder, Constants.Configuration.ConfigTours);
|
||||
AddOptions<TypeFinderSettings>(builder, Constants.Configuration.ConfigTypeFinder);
|
||||
AddOptions<UserPasswordConfigurationSettings>(builder, Constants.Configuration.ConfigUserPassword);
|
||||
AddOptions<WebRoutingSettings>(builder, Constants.Configuration.ConfigWebRouting);
|
||||
AddOptions<UmbracoPluginSettings>(builder, Constants.Configuration.ConfigPlugins);
|
||||
AddOptions<UnattendedSettings>(builder, Constants.Configuration.ConfigUnattended);
|
||||
AddOptions<RichTextEditorSettings>(builder, Constants.Configuration.ConfigRichTextEditor);
|
||||
AddOptions<RuntimeMinificationSettings>(builder, Constants.Configuration.ConfigRuntimeMinification);
|
||||
builder
|
||||
.AddUmbracoOptions<ModelsBuilderSettings>()
|
||||
.AddUmbracoOptions<ConnectionStrings>()
|
||||
.AddUmbracoOptions<ActiveDirectorySettings>()
|
||||
.AddUmbracoOptions<ContentSettings>()
|
||||
.AddUmbracoOptions<CoreDebugSettings>()
|
||||
.AddUmbracoOptions<ExceptionFilterSettings>()
|
||||
.AddUmbracoOptions<GlobalSettings>()
|
||||
.AddUmbracoOptions<HealthChecksSettings>()
|
||||
.AddUmbracoOptions<HostingSettings>()
|
||||
.AddUmbracoOptions<ImagingSettings>()
|
||||
.AddUmbracoOptions<IndexCreatorSettings>()
|
||||
.AddUmbracoOptions<KeepAliveSettings>()
|
||||
.AddUmbracoOptions<LoggingSettings>()
|
||||
.AddUmbracoOptions<MemberPasswordConfigurationSettings>()
|
||||
.AddUmbracoOptions<NuCacheSettings>()
|
||||
.AddUmbracoOptions<RequestHandlerSettings>()
|
||||
.AddUmbracoOptions<RuntimeSettings>()
|
||||
.AddUmbracoOptions<SecuritySettings>()
|
||||
.AddUmbracoOptions<TourSettings>()
|
||||
.AddUmbracoOptions<TypeFinderSettings>()
|
||||
.AddUmbracoOptions<UserPasswordConfigurationSettings>()
|
||||
.AddUmbracoOptions<WebRoutingSettings>()
|
||||
.AddUmbracoOptions<UmbracoPluginSettings>()
|
||||
.AddUmbracoOptions<UnattendedSettings>()
|
||||
.AddUmbracoOptions<RichTextEditorSettings>()
|
||||
.AddUmbracoOptions<RuntimeMinificationSettings>();
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user