using System;
using Prism.Ioc;
using Prism.Modularity;
using XP.Common.Dump.Configs;
using XP.Common.Dump.Implementations;
using XP.Common.Dump.Interfaces;
using XP.Common.Helpers;
using XP.Common.Localization.Configs;
using XP.Common.Localization.Extensions;
using XP.Common.Localization.Implementations;
using XP.Common.Localization.Interfaces;
using XP.Common.Logging.Interfaces;
using XP.Common.PdfViewer.Implementations;
using XP.Common.PdfViewer.Interfaces;
namespace XP.Common.Module
{
///
/// 通用模块 | Common module
/// 提供通用基础设施服务,包括本地化支持 | Provides common infrastructure services including localization support
///
public class CommonModule : IModule
{
///
/// 模块初始化 | Module initialization
/// 在所有类型注册完成后调用 | Called after all types are registered
///
public void OnInitialized(IContainerProvider containerProvider)
{
// 获取日志服务 | Get logger service
var logger = containerProvider.Resolve().ForModule("XP.Common.Module.CommonModule");
try
{
// 解析本地化服务 | Resolve localization service
var localizationService = containerProvider.Resolve();
// 初始化 LocalizationExtension | Initialize LocalizationExtension
LocalizationExtension.Initialize(localizationService);
logger.Info("本地化系统初始化成功 | Localization system initialized successfully");
logger.Info($"当前语言 | Current language: {localizationService.CurrentLanguage}");
// 启动 Dump 服务 | Start Dump service
var dumpService = containerProvider.Resolve();
dumpService.Start();
logger.Info("Dump 服务初始化成功 | Dump service initialized successfully");
}
catch (Exception ex)
{
logger.Error(ex, "本地化系统初始化失败 | Localization system initialization failed");
throw;
}
}
///
/// 注册类型到 DI 容器 | Register types to DI container
///
public void RegisterTypes(IContainerRegistry containerRegistry)
{
// 注册本地化配置服务为单例 | Register localization config service as singleton
containerRegistry.RegisterSingleton();
// 注册本地化服务为单例 | Register localization service as singleton
containerRegistry.RegisterSingleton();
// 注册 Dump 配置为单例(通过工厂方法加载)| Register Dump config as singleton (via factory method)
containerRegistry.RegisterSingleton(() => ConfigLoader.LoadDumpConfig());
// 注册 Dump 服务为单例 | Register Dump service as singleton
containerRegistry.RegisterSingleton();
// 注册 PDF 打印服务为单例 | Register PDF print service as singleton
containerRegistry.RegisterSingleton();
// 注册 PDF 查看服务为单例 | Register PDF viewer service as singleton
containerRegistry.RegisterSingleton();
}
}
}