diff --git a/Toolkit.Foundation/IHostBuilderExtension.cs b/Toolkit.Foundation/IHostBuilderExtension.cs index bdd4314..f7dd27b 100644 --- a/Toolkit.Foundation/IHostBuilderExtension.cs +++ b/Toolkit.Foundation/IHostBuilderExtension.cs @@ -4,7 +4,9 @@ using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.FileProviders.Physical; using Microsoft.Extensions.Hosting; +using System.Collections.ObjectModel; using System.Text.Json; +using static System.Collections.Specialized.BitVector32; namespace Toolkit.Foundation; @@ -60,7 +62,6 @@ public static class IHostBuilderExtension builder.ConfigureServices((context, services) => { HashSet sections = []; - if (section.EndsWith(":*")) { section = section[..^1]; @@ -72,7 +73,7 @@ public static class IHostBuilderExtension if (segments.Length > 2) { string keyPrefix = string.Join(':', segments.Take(2)); - if (!keyPrefix.EndsWith(":*")) + if (keyPrefix.StartsWith(section) && !keyPrefix.EndsWith(":*")) { sections.Add(keyPrefix); } @@ -82,11 +83,33 @@ public static class IHostBuilderExtension } else { - sections.Add(section); + if (context.Configuration is ConfigurationRoot root) + { + sections.Add(section); + } } - + foreach (string section in sections) { + if (context.Properties.TryGetValue(section, out object? value)) + { + if (value is List configurations) + { + if (configurations.Contains(typeof(TConfiguration))) + { + return; + } + else + { + configurations.Add(typeof(TConfiguration)); + } + } + } + else + { + context.Properties.Add(section, new List { typeof(TConfiguration) }); + } + services.TryAddSingleton>(provider => { IFileInfo? fileInfo = null; diff --git a/Toolkit.Foundation/IProxyService.cs b/Toolkit.Foundation/IProxyService.cs index 4689185..f91a38d 100644 --- a/Toolkit.Foundation/IProxyService.cs +++ b/Toolkit.Foundation/IProxyService.cs @@ -2,5 +2,5 @@ public interface IProxyService { - TService Proxy { get; } + TService Value { get; } } \ No newline at end of file diff --git a/Toolkit.Foundation/ProxyService.cs b/Toolkit.Foundation/ProxyService.cs index 03a1eb2..870e226 100644 --- a/Toolkit.Foundation/ProxyService.cs +++ b/Toolkit.Foundation/ProxyService.cs @@ -3,5 +3,5 @@ public class ProxyService(TService proxy) : IProxyService { - public TService Proxy { get; private set; } = proxy; + public TService Value { get; private set; } = proxy; } \ No newline at end of file