40 lines
1.6 KiB
C#
40 lines
1.6 KiB
C#
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<IDatabaseConnectionFactory>(_ => SqlServerConnectionFactory.Current);
|
|
services.AddSingleton(new DocumentNumberDirectoryService(System.IO.Path.Combine(AppContext.BaseDirectory, "Assets", "document-number-directory.json")));
|
|
services.AddTransient<PsvDataService>();
|
|
services.AddTransient<MainWindow>(provider => new MainWindow(
|
|
provider.GetRequiredService<PsvDataService>(),
|
|
provider.GetRequiredService<DocumentNumberDirectoryService>()));
|
|
})
|
|
.UseDefaultServiceProvider((_, options) =>
|
|
{
|
|
options.ValidateOnBuild = true;
|
|
options.ValidateScopes = true;
|
|
})
|
|
.Build();
|
|
}
|
|
}
|
|
}
|