App.xaml.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using Unity;
  2. using Prism.Ioc;
  3. using EaseDapper;
  4. using Prism.Unity;
  5. using System.Windows;
  6. using Prism.Modularity;
  7. using Unity.Interception;
  8. using SHJX.Service.PortClient;
  9. using SHJX.Service.Common.ReadXML;
  10. using SHJX.Service.Common.Service;
  11. using SHJX.Service.Control.Service;
  12. using SHJX.Service.Common.Interface;
  13. using SHJX.Service.Shell.Views.Login;
  14. using SHJX.Service.Control.Interface;
  15. using SHJX.Service.Shell.Views.Manual;
  16. using SHJX.Service.Control.Repository;
  17. using SHJX.Service.Shell.Views.Setting;
  18. using Unity.Interception.PolicyInjection;
  19. using Unity.Interception.ContainerIntegration;
  20. using Unity.Interception.Interceptors.InstanceInterceptors.InterfaceInterception;
  21. using EaseScheduler;
  22. using System.Threading;
  23. using SHJX.Service.Control.Utils;
  24. namespace SHJX.Service.Shell
  25. {
  26. /// <summary>
  27. /// Interaction logic for App.xaml
  28. /// </summary>
  29. public partial class App : PrismApplication
  30. {
  31. protected override void OnStartup(StartupEventArgs e)
  32. {
  33. _ = new Mutex(true, "Hypermanganate_WorkStation_Software", out var ret);
  34. if (ret)
  35. {
  36. base.OnStartup(e);
  37. }
  38. else
  39. {
  40. MessageBox.Show("有一个和本程序相同的应用程序已经在运行,请不要同时运行多个本程序。\n\n这个程序即将退出。");
  41. Current.Shutdown();
  42. return;
  43. }
  44. }
  45. protected override Window CreateShell()
  46. {
  47. return Container.Resolve<LoginWindow>();
  48. }
  49. protected override void RegisterTypes(IContainerRegistry containerRegistry)
  50. {
  51. IUnityContainer container = PrismIocExtensions.GetContainer(containerRegistry);
  52. //注册服务和添加显示拦截
  53. container.AddNewExtension<Interception>()
  54. .RegisterType<IMainService, MainService>(new Interceptor<InterfaceInterceptor>(), new InterceptionBehavior<PolicyInjectionBehavior>())
  55. .RegisterType<ISampleService, SampleService>(new Interceptor<InterfaceInterceptor>(), new InterceptionBehavior<PolicyInjectionBehavior>())
  56. .RegisterType<ITemplateService, TemplateService>(new Interceptor<InterfaceInterceptor>(), new InterceptionBehavior<PolicyInjectionBehavior>())
  57. .RegisterType<ILoginService, LoginService>(new Interceptor<InterfaceInterceptor>(), new InterceptionBehavior<PolicyInjectionBehavior>())
  58. .RegisterType<ISettingService, SettingService>(new Interceptor<InterfaceInterceptor>(), new InterceptionBehavior<PolicyInjectionBehavior>())
  59. .RegisterType<IManualService, ManualService>(new Interceptor<InterfaceInterceptor>(), new InterceptionBehavior<PolicyInjectionBehavior>());
  60. containerRegistry.AddScheduler<Repositorys>();
  61. containerRegistry.Register<ExportFile>();
  62. containerRegistry.Register<Repositorys>();
  63. containerRegistry.Register<PortConnect>();
  64. containerRegistry.RegisterInstance(typeof(ReadConfigUtil), ReadConfigUtil.Instance);
  65. ConnectConfig config = new()
  66. {
  67. DbType = DataManagerConfig.Instance.DbType,
  68. ConnectString = DataManagerConfig.Instance.ConnString
  69. };
  70. IDataManager _dataManager = new DataManagerClient(config);
  71. containerRegistry.RegisterInstance(_dataManager);
  72. //注册单例模式
  73. containerRegistry.RegisterSingleton<IApplicationCommands, ApplicationCommands>();
  74. containerRegistry.RegisterSingleton<IWorkFlowService, WorkFlowService>();
  75. containerRegistry.RegisterSingleton<ILogService, LogService>();
  76. //注册类型
  77. containerRegistry.RegisterInstance<IFlyoutService>(Container.Resolve<FlyoutService>());
  78. #region 注册导航
  79. //登录导航
  80. containerRegistry.RegisterForNavigation<LoginMainContent>();
  81. containerRegistry.RegisterForNavigation<CreateAccount>();
  82. //设置导航
  83. containerRegistry.RegisterForNavigation<TitrationSettingWindow>();
  84. containerRegistry.RegisterForNavigation<HeatingSettingWindow>();
  85. containerRegistry.RegisterForNavigation<EquipmentSettingWindow>();
  86. containerRegistry.RegisterForNavigation<OtherSettingWindow>();
  87. //手动导航
  88. containerRegistry.RegisterForNavigation<LiquidManualWindow>();
  89. containerRegistry.RegisterForNavigation<MotorManualWindow>();
  90. containerRegistry.RegisterForNavigation<TitrationManualWindow>();
  91. containerRegistry.RegisterForNavigation<Titration2ManualWindow>();
  92. containerRegistry.RegisterForNavigation<TemperatureManualWindow>();
  93. containerRegistry.RegisterForNavigation<OtherManualWindow>();
  94. #endregion
  95. }
  96. protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
  97. {
  98. moduleCatalog.AddModule<Main.MainModule>();
  99. }
  100. }
  101. }