using GFramework.Core.Abstractions.architecture; using GFramework.Core.Abstractions.enums; using GFramework.Core.Abstractions.utility; namespace GFramework.Core.architecture; /// /// 注册表初始化钩子抽象基类,简化注册表配置的初始化逻辑 /// /// 注册表类型 /// 配置类型 public abstract class RegistryInitializationHookBase : IArchitectureLifecycleHook where TRegistry : class, IUtility { private readonly IEnumerable _configs; private readonly ArchitecturePhase _targetPhase; /// /// 初始化注册表初始化钩子 /// /// 配置集合 /// 目标执行阶段,默认为 AfterSystemInit protected RegistryInitializationHookBase( IEnumerable configs, ArchitecturePhase targetPhase = ArchitecturePhase.AfterSystemInit) { _configs = configs; _targetPhase = targetPhase; } /// /// 当架构进入指定阶段时触发的回调方法 /// /// 当前的架构阶段 /// 相关的架构实例 public void OnPhase(ArchitecturePhase phase, IArchitecture architecture) { if (phase != _targetPhase) return; var registry = architecture.Context.GetUtility(); if (registry == null) return; foreach (var config in _configs) { RegisterConfig(registry, config); } } /// /// 注册单个配置项到注册表 /// /// 注册表实例 /// 配置项 protected abstract void RegisterConfig(TRegistry registry, TConfig config); }