mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 08:44:29 +08:00
2.5 KiB
2.5 KiB
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.SourceGeneratorsGFramework.Godot.SourceGenerators
主要能力
上下文注入与 ContextAware
该包支持围绕上下文感知类型生成辅助代码,例如:
[ContextAware][GetModel][GetModels][GetSystem][GetSystems][GetUtility][GetUtilities][GetService][GetServices][GetAll]
这类生成器适合用于 View、Controller、Godot 节点包装或其他需要频繁访问架构上下文的类型。
日志辅助
支持通过生成器减少 ILogger 相关样板代码。
注册分析器
包内还包含分析器,用来检查 Model、System、Utility 的使用点是否能在所属架构中找到静态可见注册,帮助尽早发现“代码可以编译、运行时却缺注册”的问题。
最小接入路径
<ItemGroup>
<PackageReference Include="GeWuYou.GFramework.Core.SourceGenerators"
Version="x.y.z"
PrivateAssets="all"
ExcludeAssets="runtime" />
</ItemGroup>
如果你想查看生成代码,可在消费者项目里启用:
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
适用场景
- 你希望减少上下文绑定与日志相关样板代码
- 你需要在编译期发现部分注册可见性问题
- 你在做模块化架构,希望固定某些重复注册模式