using System.Windows; using CursorLang.Models; using CursorLang.Services; using CursorLang.ViewModels; using CursorLang.Views; using Microsoft.Extensions.DependencyInjection; namespace CursorLang; /// /// Композиционный корень: собирает контейнер и запускает окно настроек. /// public partial class App : Application { private ServiceProvider? _services; protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var services = new ServiceCollection(); ConfigureServices(services); _services = services.BuildServiceProvider(); _services.GetRequiredService(); MainWindow = _services.GetRequiredService(); MainWindow.Show(); _services.GetRequiredService().Start(); _services.GetRequiredService().Start(); } protected override void OnExit(ExitEventArgs e) { _services?.Dispose(); base.OnExit(e); } private static void ConfigureServices(IServiceCollection services) { services.AddSingleton(new KeyboardLayoutOptions()); services.AddSingleton(); services.AddSingleton(provider => provider.GetRequiredService().Load()); services.AddSingleton(); services.AddSingleton(provider => provider.GetRequiredService()); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); } }