using GFramework.Core.Abstractions.Lifecycle; using GFramework.Core.Abstractions.Model; using GFramework.Core.Abstractions.Systems; using GFramework.Core.Abstractions.Utility; using Microsoft.Extensions.DependencyInjection; namespace GFramework.Core.Abstractions.Architectures; /// /// 架构接口,专注于生命周期管理,包括系统、模型、工具的注册和获取 /// 业务操作通过 ArchitectureRuntime 提供 /// public interface IArchitecture : IAsyncInitializable, IAsyncDestroyable, IInitializable, IDestroyable { /// /// 获取架构上下文 /// IArchitectureContext Context { get; } /// /// 获取或设置用于配置服务集合的委托 /// /// /// 一个可为空的委托,用于配置IServiceCollection实例 /// Action? Configurator { get; } /// /// 注册系统实例到架构中 /// /// 系统类型,必须实现ISystem接口 /// 要注册的系统实例 /// 注册的系统实例 T RegisterSystem(T system) where T : ISystem; /// /// 注册系统实例到架构中 /// /// 系统类型,必须实现ISystem接口 /// 系统实例创建后的回调函数,可为null void RegisterSystem(Action? onCreated = null) where T : class, ISystem; /// /// 注册模型实例到架构中 /// /// 模型类型,必须实现IModel接口 /// 要注册的模型实例 /// 注册的模型实例 T RegisterModel(T model) where T : IModel; /// /// 注册模型实例到架构中 /// /// 模型类型,必须实现IModel接口 /// 模型实例创建后的回调函数,可为null void RegisterModel(Action? onCreated = null) where T : class, IModel; /// /// 注册工具实例到架构中 /// /// 工具类型,必须实现IUtility接口 /// 要注册的工具实例 /// 注册的工具实例 T RegisterUtility(T utility) where T : IUtility; /// /// 注册工具类型并可选地指定创建回调 /// 当工具实例被创建时会调用指定的回调函数 /// /// 工具类型,必须是引用类型且实现IUtility接口 /// 工具实例创建后的回调函数,可为null void RegisterUtility(Action? onCreated = null) where T : class, IUtility; /// /// 注册中介行为管道 /// 用于配置Mediator框架的行为拦截和处理逻辑 /// /// 行为类型,必须是引用类型 void RegisterMediatorBehavior() where TBehavior : class; /// /// 安装架构模块 /// /// 要安装的模块 /// 安装的模块实例 IArchitectureModule InstallModule(IArchitectureModule module); /// /// 注册生命周期钩子 /// /// 生命周期钩子实例 /// 注册的钩子实例 IArchitectureLifecycleHook RegisterLifecycleHook(IArchitectureLifecycleHook hook); /// /// 等待直到架构准备就绪的异步操作 /// /// 表示异步等待操作的任务 Task WaitUntilReadyAsync(); }