GFramework/GFramework.Core.SourceGenerators
GeWuYou ebdc231c07 docs(sdk): 更新文档规范并添加VitePress配置
- 调整文档真实性原则,以源码和测试为首要证据源
- 新增模块README要求,规定所有用户包必须有说明文档
- 更新仓库文档规范,要求根README与文档站点分类一致
- 添加VitePress配置文件,支持中文搜索和泛型转义
- 创建入门指南文档,说明GFramework模块组成和接入路径
- 添加快速开始教程,演示Core模块最小使用示例
- 为Core模块添加详细README文档
- 为Core.Abstractions添加契约层说明文档
- 为Core.SourceGenerators添加源码生成器文档
- 为Game模块添加运行时层详细说明文档
2026-04-18 10:08:05 +08:00
..

GFramework.Core.SourceGenerators

GFramework.Core.SourceGenerators 承载 Core 侧的通用源码生成器与分析器,用来减少样板代码并把部分约束前移到编译期。

模块定位

这个包属于编译期工具链,不是运行时库。

当前仓库中的主要目录:

  • Architectures/
  • Analyzers/
  • Bases/
  • Enums/
  • Logging/
  • Rule/
  • Diagnostics/

对应的生成器家族主要包括:

  • 日志相关生成器
  • ContextAware 及上下文注入辅助
  • 枚举扩展生成器
  • 优先级相关生成器
  • 模块自动注册
  • 注册可见性分析器

包关系

  • 运行时:GFramework.Core
  • 契约与特性:GFramework.Core.SourceGenerators.Abstractions
  • 公共生成器支撑:GFramework.SourceGenerators.Common

如果你还需要游戏配置 schema 生成或 Godot 专用生成器,应分别安装:

  • GFramework.Game.SourceGenerators
  • GFramework.Godot.SourceGenerators

主要能力

上下文注入与 ContextAware

该包支持围绕上下文感知类型生成辅助代码,例如:

  • [ContextAware]
  • [GetModel]
  • [GetModels]
  • [GetSystem]
  • [GetSystems]
  • [GetUtility]
  • [GetUtilities]
  • [GetService]
  • [GetServices]
  • [GetAll]

这类生成器适合用于 View、Controller、Godot 节点包装或其他需要频繁访问架构上下文的类型。

日志辅助

支持通过生成器减少 ILogger 相关样板代码。

注册分析器

包内还包含分析器,用来检查 ModelSystemUtility 的使用点是否能在所属架构中找到静态可见注册,帮助尽早发现“代码可以编译、运行时却缺注册”的问题。

最小接入路径

<ItemGroup>
  <PackageReference Include="GeWuYou.GFramework.Core.SourceGenerators"
                    Version="x.y.z"
                    PrivateAssets="all"
                    ExcludeAssets="runtime" />
</ItemGroup>

如果你想查看生成代码,可在消费者项目里启用:

<PropertyGroup>
  <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
  <CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>

适用场景

  • 你希望减少上下文绑定与日志相关样板代码
  • 你需要在编译期发现部分注册可见性问题
  • 你在做模块化架构,希望固定某些重复注册模式

对应文档