Files

68 lines
3.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Prism.Ioc;
using Prism.Modularity;
using System.Resources;
using XP.Common.Localization;
using XP.Common.Localization.Interfaces;
using XP.Hardware.MotionControl.Abstractions;
using XP.Hardware.MotionControl.Config;
using XP.Hardware.MotionControl.Implementations;
using XP.Hardware.MotionControl.Services;
namespace XP.Hardware.MotionControl.Module
{
/// <summary>
/// 运动控制 Prism 模块 | Motion Control Prism Module
/// 负责注册运动控制相关服务到 DI 容器,并在初始化时注册多语言资源和启动轮询
/// Registers motion control services to DI container, registers localization resources and starts polling on initialization
/// </summary>
[Module(ModuleName = "MotionControlModule")]
public class MotionControlModule : IModule
{
/// <summary>
/// 注册类型到 DI 容器 | Register types to DI container
/// </summary>
/// <param name="containerRegistry">容器注册器 | Container registry</param>
public void RegisterTypes(IContainerRegistry containerRegistry)
{
// 加载配置(单例)| Load configuration (singleton)
var config = ConfigLoader.LoadConfig();
containerRegistry.RegisterInstance(config);
// 注册几何计算器(单例)| Register geometry calculator (singleton)
containerRegistry.RegisterSingleton<GeometryCalculator>();
// 注册运动系统(单例)| Register motion system (singleton)
containerRegistry.RegisterSingleton<IMotionSystem, PlcMotionSystem>();
// 注册运动控制业务服务(单例)| Register motion control service (singleton)
containerRegistry.RegisterSingleton<IMotionControlService, MotionControlService>();
System.Console.WriteLine("[MotionControlModule] 类型注册完成 | Type registration completed");
}
/// <summary>
/// 模块初始化 | Module initialization
/// </summary>
/// <param name="containerProvider">容器提供者 | Container provider</param>
public void OnInitialized(IContainerProvider containerProvider)
{
// 注册模块级多语言资源到 Fallback Chain | Register module-level localization resources to Fallback Chain
var localizationService = containerProvider.Resolve<ILocalizationService>();
var resourceManager = new ResourceManager(
"XP.Hardware.MotionControl.Resources.Resources",
typeof(MotionControlModule).Assembly);
localizationService.RegisterResourceSource("XP.Hardware.MotionControl", resourceManager);
// 初始化 LocalizationHelper,使其通过 ILocalizationService 获取字符串(支持 Fallback Chain
// Initialize LocalizationHelper to use ILocalizationService for string lookup (supports Fallback Chain)
LocalizationHelper.Initialize(localizationService);
// 启动 PLC 状态轮询 | Start PLC status polling
var motionService = containerProvider.Resolve<IMotionControlService>();
motionService.StartPolling();
System.Console.WriteLine("[MotionControlModule] 模块已初始化 | Module initialized");
}
}
}