Добавьте файлы проекта.

This commit is contained in:
Курнат Андрей
2026-04-04 10:52:30 +03:00
parent 9b34a92f15
commit 5a55bc5f4c
30 changed files with 3446 additions and 0 deletions

47
AppHost.cs Normal file
View File

@@ -0,0 +1,47 @@
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<IDatabaseConnectionFactory, SqlServerConnectionFactory>();
services.AddSingleton<DatabaseInitializer>();
services.AddSingleton<InstrumentRepository>();
services.AddSingleton<CatalogPageParser>();
services.AddSingleton<DetailPageParser>();
services.AddSingleton<KtoPoveritClient>();
services.AddSingleton<PdfStorageService>();
services.AddSingleton<InstrumentCatalogService>();
services.AddSingleton<IPdfOpener, PdfShellService>();
services.AddSingleton<IFilePickerService, FilePickerService>();
services.AddTransient<MainWindow>(provider => new MainWindow(
provider.GetRequiredService<InstrumentCatalogService>(),
provider.GetRequiredService<IPdfOpener>(),
provider.GetRequiredService<IFilePickerService>()));
})
.UseDefaultServiceProvider((_, options) =>
{
options.ValidateOnBuild = true;
options.ValidateScopes = true;
})
.Build();
}
}