using Client.Domain.Factories; using Client.Infrastructure.Factories; using Client.Domain.Parsers; using Client.Infrastructure.Parsers; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System.Windows; using Client.Domain.Transports; using Client.Infrastructure.Transports; using Client.Domain.Entities; using Client.Domain.Service; using BaseApp = System.Windows.Application; namespace Client { /// /// Interaction logic for App.xaml /// public partial class App : BaseApp { public static IHost? AppHost { get; private set; } public App() { AppHost = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { services .AddSingleton() .AddSingleton( typeof(Application), x => new Application( x.GetRequiredService(), x.GetRequiredService(), x.GetRequiredService(), "L2BotDll.dll" ) ) .AddSingleton(typeof(EntityHandlerFactoryInterface), typeof(EntityHandlerFactory)) .AddSingleton(typeof(MessageParserInterface), typeof(JsonMessageParser)) .AddSingleton(typeof(TransportInterface), x => new NamedPipeTransport("PipeL2Bot")) .AddTransient(typeof(EntityFactoryInterface), typeof(EntityFactory)) .AddTransient(typeof(EntityFactoryInterface), typeof(EntityFactory)) .AddSingleton>() .AddSingleton>(); }) .Build(); } protected override async void OnStartup(StartupEventArgs e) { await AppHost!.StartAsync(); var startupForm = AppHost.Services.GetRequiredService(); startupForm.Show(); var application = AppHost.Services.GetRequiredService(); application.StartAsync(); base.OnStartup(e); } protected override async void OnExit(ExitEventArgs e) { await AppHost!.StopAsync(); base.OnExit(e); } } }