using Hyperbar.Windows.Controls; using Hyperbar.Windows.Interop; using Hyperbar.Windows.UI; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.UI.Xaml; using System; using System.Reflection; using Windows.Media.Control; namespace Hyperbar.Windows; public partial class App : Application { public App() => InitializeComponent(); protected override async void OnLaunched(LaunchActivatedEventArgs args) { base.OnLaunched(args); IHost? host = new HostBuilder() .UseContentRoot(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Assembly.GetEntryAssembly()?.GetName().Name!), true) .ConfigureAppConfiguration(config => { config.AddJsonFile("Settings.json", true, true); }) .ConfigureServices((context, services) => { services.AddDefault(); services.AddHostedService(); services.AddSingleton(); services.AddTransient(); services.AddHandler(); services.AddConfiguration(args => { args.Placement = DesktopBarPlacemenet.Top; }); services.AddTransient(); services.AddSingleton(); services.AddContentTemplate(); services.AddContentTemplate(); services.AddTransient>(provider => new ProxyServiceCollection(services => { services.AddSingleton(); services.AddTransient(); services.AddScoped(); services.AddHandler(); services.AddHandler(); services.AddTransient(); services.AddContentTemplate(); services.AddContentTemplate(); })); //services.AddTransient(provider => //{ // static IEnumerable Resolve(IServiceProvider services) // { // int index = 0; // foreach (WidgetContext widgetContext in services.GetServices()) // { // if (widgetContext.ServiceProvider.GetService() is IWidget widget) // { // if (widgetContext.ServiceProvider.GetServices() is // IEnumerable viewModels) // { // yield return (WidgetContainerViewModel)ActivatorUtilities.CreateInstance(widgetContext.ServiceProvider, // typeof(WidgetContainerViewModel), viewModels, index % 2 == 1, widget.Id); // index++; // } // } // } // } // return Resolve(provider); //}); }) .Build(); var d = host.Services.GetService(); await host.RunAsync(); } }