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();
}
}
}