More configuration work

This commit is contained in:
TheXamlGuy
2024-01-06 21:33:53 +00:00
parent 36c718c07e
commit 28af62d72d
14 changed files with 102 additions and 29 deletions
+2 -1
View File
@@ -5,6 +5,7 @@ using Hyperbar.Windows.Primary;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using Microsoft.UI.Xaml;
namespace Hyperbar.Windows;
@@ -23,7 +24,7 @@ public partial class App :
.ConfigureAppConfiguration(config =>
{
config.SetBasePath(AppContext.BaseDirectory);
config.AddJsonFile("Settings.json", true);
config.AddJsonFile("Settings.json", true, true);
config.Build();
})
@@ -1,7 +1,10 @@
using Hyperbar.Extensions;
using Hyperbar.Windows.Interop;
using Hyperbar.Windows.Primary;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
namespace Hyperbar.Windows
{
@@ -13,8 +16,18 @@ namespace Hyperbar.Windows
{
TWidgetProvider builder = new();
IHost? host = new HostBuilder()
.ConfigureServices(isolatedServices =>
.UseContentRoot(AppContext.BaseDirectory)
.ConfigureAppConfiguration(config =>
{
config.SetBasePath(AppContext.BaseDirectory);
config.AddJsonFile("Settings.json", true, true);
config.Build();
})
.ConfigureServices((context, isolatedServices) =>
{
isolatedServices.AddHostedService<WidgetService>();
isolatedServices.AddSingleton<IServiceFactory>(provider =>
new ServiceFactory((type, parameters) => ActivatorUtilities.CreateInstance(provider, type, parameters!)));
@@ -29,10 +42,15 @@ namespace Hyperbar.Windows
isolatedServices.AddTransient<ITemplateFactory, TemplateFactory>();
isolatedServices.AddTransient<ITemplateGeneratorFactory, TemplateGeneratorFactory>();
builder.Create(isolatedServices);
builder.Create(context, isolatedServices);
}).Build();
services.AddTransient<IWidgetContext>(provider => new WidgetContext(host.Services));
host.Start();
var d = host.Services.GetService<IOptionsMonitor<PrimaryWidgetConfiguration>>();
return services;
}
}