Configutation writer fixed
This commit is contained in:
@@ -105,11 +105,11 @@ public static class IServiceCollectionExtensions
|
||||
public static IServiceCollection AddWritableConfiguration<TConfiguration>(this IServiceCollection serviceCollection, IConfiguration configuration) where TConfiguration : class, new()
|
||||
{
|
||||
serviceCollection.Configure<TConfiguration>(configuration);
|
||||
serviceCollection.AddTransient<IConfigurationWriter<TConfiguration>, ConfigurationWriter<TConfiguration>>();
|
||||
serviceCollection.AddTransient<IConfigurationWriter<TConfiguration>>(provider => provider.GetService<IServiceFactory>()?.Create< ConfigurationWriter<TConfiguration>>(configuration is IConfigurationSection section ? section.Path : "")!);
|
||||
serviceCollection.AddTransient(provider => provider.GetService<IOptionsMonitor<TConfiguration>>()!.CurrentValue);
|
||||
serviceCollection.AddHandler<WriteHandler<TConfiguration>>();
|
||||
serviceCollection.AddTransient<ConfigurationInitializer<TConfiguration>>();
|
||||
|
||||
|
||||
return serviceCollection;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.FileProviders;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace Toolkit.Framework.Foundation;
|
||||
|
||||
public static class WritableJsonConfigurationExtensions
|
||||
{
|
||||
public static IConfigurationBuilder AddWritableJsonFile(this IConfigurationBuilder builder,
|
||||
string path)
|
||||
{
|
||||
return builder.AddWritableJsonFile(null, path, false, false, null);
|
||||
}
|
||||
|
||||
public static IConfigurationBuilder AddWritableJsonFile(this IConfigurationBuilder builder,
|
||||
string path,
|
||||
Action<IWritableJsonConfigurationBuilder>? factoryDelegate)
|
||||
{
|
||||
return builder.AddWritableJsonFile(null, path, false, false, factoryDelegate);
|
||||
}
|
||||
|
||||
public static IConfigurationBuilder AddWritableJsonFile(this IConfigurationBuilder builder,
|
||||
string path,
|
||||
bool optional)
|
||||
{
|
||||
return builder.AddWritableJsonFile(null, path, optional, false, null);
|
||||
}
|
||||
|
||||
public static IConfigurationBuilder AddWritableJsonFile(this IConfigurationBuilder builder,
|
||||
string path,
|
||||
bool optional,
|
||||
Action<IWritableJsonConfigurationBuilder>? factoryDelegate)
|
||||
{
|
||||
return builder.AddWritableJsonFile(null, path, optional, false, factoryDelegate);
|
||||
}
|
||||
|
||||
public static IConfigurationBuilder AddWritableJsonFile(this IConfigurationBuilder builder,
|
||||
string path,
|
||||
bool optional,
|
||||
bool reloadOnChange)
|
||||
{
|
||||
return builder.AddWritableJsonFile( null, path, optional, reloadOnChange, null);
|
||||
}
|
||||
|
||||
public static IConfigurationBuilder AddWritableJsonFile(this IConfigurationBuilder builder,
|
||||
string path,
|
||||
bool optional,
|
||||
bool reloadOnChange,
|
||||
Action<IWritableJsonConfigurationBuilder>? factoryDelegate)
|
||||
{
|
||||
return builder.AddWritableJsonFile(null, path, optional, reloadOnChange, factoryDelegate);
|
||||
}
|
||||
|
||||
public static IConfigurationBuilder AddWritableJsonFile(this IConfigurationBuilder builder,
|
||||
IFileProvider? provider,
|
||||
string path,
|
||||
bool optional,
|
||||
bool reloadOnChange, Action<IWritableJsonConfigurationBuilder>? writableJsonConfigurationDelegate)
|
||||
{
|
||||
IWritableJsonConfigurationBuilder writableJsonConfigurationBuilder = new WritableJsonConfigurationBuilder();
|
||||
writableJsonConfigurationDelegate?.Invoke(writableJsonConfigurationBuilder);
|
||||
|
||||
return builder.AddWritableJsonFile(configuration =>
|
||||
{
|
||||
configuration.FileProvider = provider;
|
||||
configuration.Path = path;
|
||||
configuration.Optional = optional;
|
||||
configuration.ReloadOnChange = reloadOnChange;
|
||||
configuration.Factory = writableJsonConfigurationBuilder;
|
||||
configuration.ResolveFileProvider();
|
||||
});
|
||||
}
|
||||
|
||||
public static IConfigurationBuilder AddWritableJsonFile(this IConfigurationBuilder builder, Action<WritableJsonConfigurationSource> configureSource) => builder.Add(configureSource);
|
||||
}
|
||||
Reference in New Issue
Block a user