GFramework/GFramework.Core.SourceGenerators
gewuyou ff553977e3 chore(license): 补齐 Apache-2.0 文件头治理
- 新增许可证文件头检查与修复脚本

- 补充维护者手动修复 PR 工作流和 CI 校验

- 更新贡献指南中的文件头说明

- 补齐仓库维护源码和配置文件的许可证声明
2026-05-03 19:39:49 +08:00
..
2026-04-25 11:35:25 +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>

适用场景

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

对应文档