using Unity; using Prism.Ioc; using EaseDapper; using Prism.Unity; using System.Windows; using Prism.Modularity; using Unity.Interception; using SHJX.Service.PortClient; using SHJX.Service.Common.ReadXML; using SHJX.Service.Common.Service; using SHJX.Service.Control.Service; using SHJX.Service.Common.Interface; using SHJX.Service.Shell.Views.Login; using SHJX.Service.Control.Interface; using SHJX.Service.Shell.Views.Manual; using SHJX.Service.Control.Repository; using SHJX.Service.Shell.Views.Setting; using Unity.Interception.PolicyInjection; using Unity.Interception.ContainerIntegration; using Unity.Interception.Interceptors.InstanceInterceptors.InterfaceInterception; using EaseScheduler; using System.Threading; using SHJX.Service.Control.Utils; namespace SHJX.Service.Shell { /// /// Interaction logic for App.xaml /// public partial class App : PrismApplication { protected override void OnStartup(StartupEventArgs e) { _ = new Mutex(true, "Hypermanganate_WorkStation_Software", out var ret); if (ret) { base.OnStartup(e); } else { MessageBox.Show("有一个和本程序相同的应用程序已经在运行,请不要同时运行多个本程序。\n\n这个程序即将退出。"); Current.Shutdown(); return; } } protected override Window CreateShell() { return Container.Resolve(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { IUnityContainer container = PrismIocExtensions.GetContainer(containerRegistry); //注册服务和添加显示拦截 container.AddNewExtension() .RegisterType(new Interceptor(), new InterceptionBehavior()) .RegisterType(new Interceptor(), new InterceptionBehavior()) .RegisterType(new Interceptor(), new InterceptionBehavior()) .RegisterType(new Interceptor(), new InterceptionBehavior()) .RegisterType(new Interceptor(), new InterceptionBehavior()) .RegisterType(new Interceptor(), new InterceptionBehavior()); containerRegistry.AddScheduler(); containerRegistry.Register(); containerRegistry.Register(); containerRegistry.Register(); containerRegistry.RegisterInstance(typeof(ReadConfigUtil), ReadConfigUtil.Instance); ConnectConfig config = new() { DbType = DataManagerConfig.Instance.DbType, ConnectString = DataManagerConfig.Instance.ConnString }; IDataManager _dataManager = new DataManagerClient(config); containerRegistry.RegisterInstance(_dataManager); //注册单例模式 containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); //注册类型 containerRegistry.RegisterInstance(Container.Resolve()); #region 注册导航 //登录导航 containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); //设置导航 containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); //手动导航 containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); #endregion } protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { moduleCatalog.AddModule(); } } }