GeWuYou a79f02c987 docs(api): 添加 Core API 参考文档与事件系统接口文档
- 新增 Core API 参考文档,涵盖架构与模块、数据模型与系统、命令与查询等核心组件
- 添加事件系统接口详细文档,包括 IEvent、IEventBus、IUnRegister 等接口说明
- 提供完整的 API 使用示例路径、最佳实践与性能建议
- 包含架构图、依赖关系图与故障排查指南
- 添加测试用例参考与扩展方法说明
- [skip ci]
2026-01-21 23:45:10 +08:00

16 KiB
Raw Blame History

依赖注入系统

**本文档引用的文件** - [IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs) - [IIocContainer.cs](file://GFramework.Core.Abstractions/ioc/IIocContainer.cs) - [README.mdIoC包](file://GFramework.Core/ioc/README.md) - [IInitializable.cs](file://GFramework.Core.Abstractions/lifecycle/IInitializable.cs) - [IDisposable.cs](file://GFramework.Core.Abstractions/lifecycle/IDisposable.cs) - [ILifecycle.cs](file://GFramework.Core.Abstractions/lifecycle/ILifecycle.cs) - [Architecture.cs](file://GFramework.Core/architecture/Architecture.cs) - [IocContainerTests.cs](file://GFramework.Core.Tests/ioc/IocContainerTests.cs)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论
  10. 附录

简介

本文件面向GFramework的依赖注入系统聚焦于IocContainer的实现与设计模式系统阐述容器的注册与解析流程、生命周期管理机制IInitializable、IDisposable、类型安全与编译时检查、容器冻结与线程安全、最佳实践与故障排除并给出可测试与可维护的架构建议。

项目结构

IoC相关代码位于以下位置

  • 核心实现GFramework.Core/ioc/IocContainer.cs
  • 接口定义GFramework.Core.Abstractions/ioc/IIocContainer.cs
  • 生命周期接口GFramework.Core.Abstractions/lifecycle/IInitializable.cs、IDisposable.cs、ILifecycle.cs
  • 使用说明与示例GFramework.Core/ioc/README.md
  • 架构集成GFramework.Core/architecture/Architecture.cs
  • 单元测试GFramework.Core.Tests/ioc/IocContainerTests.cs
graph TB
subgraph "抽象层"
II["IIocContainer 接口"]
LInit["IInitializable 接口"]
LDispose["IDisposable 接口"]
LLife["ILifecycle 接口"]
end
subgraph "实现层"
IC["IocContainer 实现"]
end
subgraph "应用层"
Arch["Architecture 架构"]
Tests["IocContainerTests 测试"]
end
II --> IC
LInit --> LLife
LDispose --> LLife
Arch --> IC
Tests --> IC

图表来源

章节来源

核心组件

  • IIocContainer定义注册、解析、查询与容器管理的契约涵盖单例、多实现、系统实例注册以及Get/GetAll/GetRequired等解析方法。
  • IocContainerIIocContainer的具体实现提供基于字典+集合的索引结构、读写锁的线程安全、容器冻结保护、日志记录与错误处理。
  • 生命周期接口IInitializable、IDisposable、ILifecycle为组件提供初始化与销毁的标准能力便于与容器生命周期协同。

章节来源

架构总览

IocContainer作为架构Architecture的核心组件之一贯穿System/Model/Utility的注册与获取。容器采用“手动注册、类型安全、线程安全、容器冻结”的设计避免自动解析带来的复杂度强调可控的生命周期与清晰的依赖关系。

sequenceDiagram
participant App as "应用代码"
participant Arch as "Architecture"
participant C as "IocContainer"
participant S as "ISystem 实例"
App->>Arch : "RegisterSystem(S)"
Arch->>C : "Register(S)"
C->>C : "写锁 + 注册内部索引"
App->>Arch : "GetSystem<T>()"
Arch->>C : "Get<T>()"
C->>C : "读锁 + 查找类型索引"
C-->>Arch : "返回实例或null"
Arch-->>App : "返回实例"

图表来源

详细组件分析

IocContainer 实现与设计模式

  • 设计模式控制反转IoC与简单工厂结合通过接口隔离与具体实现解耦。
  • 数据结构:
    • _objectsHashSet