using System; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using XLAB2.Infrastructure; namespace XLAB2 { internal static class AppHost { public static IHost Create() { return Host.CreateDefaultBuilder() .UseContentRoot(AppContext.BaseDirectory) .ConfigureAppConfiguration((context, config) => { config.Sources.Clear(); config.SetBasePath(AppContext.BaseDirectory); config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); config.AddEnvironmentVariables(); }) .ConfigureServices((_, services) => { services.AddSingleton(_ => SqlServerConnectionFactory.Current); services.AddSingleton(new DocumentNumberDirectoryService(System.IO.Path.Combine(AppContext.BaseDirectory, "Assets", "document-number-directory.json"))); services.AddTransient(); services.AddTransient(provider => new MainWindow( provider.GetRequiredService(), provider.GetRequiredService())); }) .UseDefaultServiceProvider((_, options) => { options.ValidateOnBuild = true; options.ValidateScopes = true; }) .Build(); } } }