GwWuYou 67b0e83da4 refactor(architecture): 重构架构初始化逻辑并添加异步支持
- 修改模块安装日志格式,添加.Module后缀
- 重命名_mInited字段为_mInitialized以提高语义清晰度
- 将EnterPhase方法设为protected virtual以支持继承扩展
- 将阶段变更通知的日志级别从Debug调整为Trace
- 为NotifyPhase方法添加生命周期钩子的日志记录
- 实现同步和异步初始化方法(Initialize和InitializeAsync)
- 创建InitializeComponentAsync方法统一处理组件初始化逻辑
- 重构InitializeInternalAsync方法实现完整的异步初始化流程
- 重命名测试架构类TestArchitecture为SyncTestArchitecture
- 添加异步测试模型AsyncTestModel用于验证异步初始化功能
- 添加失败模型FailingModel用于测试异常处理机制
- 重命名系统测试类的初始化和销毁状态属性
- 创建新的同步架构测试类SyncArchitectureTests替代原有测试
- 删除已过时的ArchitectureInitializationTests测试类
2026-01-02 10:39:52 +08:00

61 lines
1.7 KiB
C#
Raw 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 GFramework.Core.Abstractions.architecture;
using GFramework.Core.Abstractions.enums;
using GFramework.Core.Abstractions.model;
namespace GFramework.Core.Tests.model;
/// <summary>
/// 异步测试模型类实现了IModel和IAsyncInitializable接口
/// </summary>
public sealed class AsyncTestModel : IModel, IAsyncInitializable
{
private IArchitectureContext _context = null!;
/// <summary>
/// 获取模型是否已初始化的标志
/// </summary>
public bool Inited { get; private set; }
/// <summary>
/// 异步初始化方法,模拟异步初始化过程
/// </summary>
/// <returns>表示异步操作的Task</returns>
public async Task InitializeAsync()
{
await Task.Delay(10);
Inited = true;
}
/// <summary>
/// 同步初始化方法,该方法不应该被调用
/// </summary>
/// <exception cref="InvalidOperationException">当该方法被调用时抛出异常</exception>
public void Init()
{
// sync Init 不应该被调用
throw new InvalidOperationException("Sync Init should not be called");
}
/// <summary>
/// 设置架构上下文
/// </summary>
/// <param name="context">架构上下文对象</param>
public void SetContext(IArchitectureContext context)
{
_context = context;
}
/// <summary>
/// 获取架构上下文
/// </summary>
/// <returns>架构上下文对象</returns>
public IArchitectureContext GetContext() => _context;
/// <summary>
/// 处理架构阶段事件
/// </summary>
/// <param name="phase">架构阶段枚举值</param>
public void OnArchitecturePhase(ArchitecturePhase phase)
{
}
}