Program.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using bundleboiler.ui;
  2. using Microsoft.EntityFrameworkCore;
  3. using Microsoft.Extensions.Configuration;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using Microsoft.Extensions.Hosting;
  6. using qdr.app.bundleboiler.business;
  7. using qdr.app.bundleboiler.business.Services.Interfaces;
  8. using qdr.app.bundleboiler.data;
  9. using qdr.app.bundleboiler.data.Model;
  10. using qdr.app.bundleboiler.ui.Configuration;
  11. using Quadarax.Foundation.Core.Business.Injection;
  12. using Quadarax.Foundation.Core.Logging;
  13. namespace qdr.app.bundleboiler.ui
  14. {
  15. internal static class Program
  16. {
  17. public static IServiceProvider? ServiceProvider { get; private set; }
  18. /// <summary>
  19. /// The main entry point for the application.
  20. /// </summary>
  21. [STAThread]
  22. static void Main()
  23. {
  24. // To customize application configuration such as set high DPI settings or default font,
  25. // see https://aka.ms/applicationconfiguration.
  26. ServiceProvider = CreateHostBuilder().Build().Services;
  27. ApplicationConfiguration.Initialize();
  28. Application.Run(new MainForm(ServiceProvider.GetService<IDatabaseService>(),ServiceProvider.GetService<ILogger>()));
  29. }
  30. private static IHostBuilder CreateHostBuilder()
  31. {
  32. var optionsCfg = new ApplicationOptions();
  33. return Host.CreateDefaultBuilder()
  34. .ConfigureServices((context, services) => {
  35. // configuration
  36. services.AddSingleton<IOptions, ApplicationOptions>();
  37. // db context
  38. services.AddDbContext<BoilerDbContext>(options =>
  39. options.UseSqlServer(optionsCfg.ConnectionString ??
  40. context.Configuration.GetConnectionString("DefaultConnection")));
  41. // mapper
  42. services.AddSingleton<DataMapper>();
  43. // logging
  44. services.AddSingleton<ILogger, Quadarax.Foundation.Core.NLog.LoggerFactory>();
  45. // business services
  46. DiManager.RegisterAssemblyFromThisAppdomain(["bundleboiler.business", "bundleboiler.data"], Array.Empty<string>());
  47. DiManager.ScanAndRegisterDependencyInjections(services);
  48. });
  49. }
  50. }
  51. }