using System; using CRAWLER.Parsing; using CRAWLER.Services; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace CRAWLER; internal static class AppHost { public static IHost Create() { return Host.CreateDefaultBuilder() .UseContentRoot(AppContext.BaseDirectory) .ConfigureAppConfiguration((_, config) => { config.Sources.Clear(); config.SetBasePath(AppContext.BaseDirectory); config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); config.AddEnvironmentVariables(); }) .ConfigureServices((context, services) => { services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddTransient(provider => new MainWindow( provider.GetRequiredService(), provider.GetRequiredService(), provider.GetRequiredService())); }) .UseDefaultServiceProvider((_, options) => { options.ValidateOnBuild = true; options.ValidateScopes = true; }) .Build(); } }