using BusinessLogics.BusinessLogics; using Contracts.BusinessLogicsContracts; using Contracts.StoragesContracts; using DatabaseImplement.Implements; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; using System; namespace WinForms { internal static class Program { /// <summary> /// IoC-êîíòåéíåð /// </summary> private static ServiceProvider? _serviceProvider; /// <summary> /// IoC-êîíòåéíåð /// </summary> public static ServiceProvider? ServiceProvider => _serviceProvider; /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); var services = new ServiceCollection(); ConfigureServices(services); _serviceProvider = services.BuildServiceProvider(); Application.Run(_serviceProvider.GetRequiredService<FormMain>()); } /// <summary> /// Êîíôèãóðàöèÿ ñåðâèñîâ /// </summary> /// <param name="services"></param> private static void ConfigureServices(ServiceCollection services) { // Ëîããåð services.AddLogging(option => { option.SetMinimumLevel(LogLevel.Information); option.AddNLog("nlog.config"); }); // IoC-êîíòåéíåð, õðàíèëèùà services.AddTransient<IOrderStorage, OrderStorage>(); services.AddTransient<IOrderTypeStorage, OrderTypeStorage>(); // IoC-êîíòåéíåð, áèçíåñ-ëîãèêà services.AddTransient<IOrderLogic, OrderLogic>(); services.AddTransient<IOrderTypeLogic, OrderTypeLogic>(); // IoC-êîíòåéíåð, ôîðìû îòîáðàæåíèÿ services.AddTransient<FormVisualComponents>(); services.AddTransient<FormNonVisualComponents>(); services.AddTransient<FormMain>(); services.AddTransient<FormOrder>(); services.AddTransient<FormOrderTypes>(); } } }