从零实现增量源生成器 · 第 11 / 17 篇
为什么 hint name 不是随便起一个文件名
hint name 决定生成文件的身份边界;对嵌套类型和多目标输入来说,它不是装饰,而是稳定输出的一部分。
很多第一版生成器会把 hint name 写成固定字符串,能跑就行。这个做法在单目标样例里可能没问题,一旦目标类型变多,很快就会碰撞。
当前项目会根据目标类型和外层嵌套结构构造 hint name,最终形成类似:
Outer.Inner.Target.g.cs
为什么这件事不能随意
因为生成文件需要稳定身份。
hint name 一旦不稳定,就会带来这些问题:
- 相同目标在不同构建中产出文件名漂移
- 多个目标类型相互覆盖
- 调试生成文件时难以定位来源
文件身份稳定,测试和排错才稳定
这件事看起来像细枝末节,其实很工程化。一个可维护的生成器,不只是要“生成对的代码”,还要“持续生成同一份身份明确的代码”。
教程导航
继续阅读
当前文章已经挂到教程顺序中,建议按相邻章节继续。