从零实现增量源生成器 · 第 12 / 17 篇
可空、泛型与嵌套类型,为什么总是高风险回归点
主路径一旦能跑,最容易被忽略的就是可空、泛型和嵌套类型;而这些恰恰最容易让生成器在真实项目里失效。
一个只在“普通 public class + 普通属性”上能跑的生成器,离工程可用还很远。真正拉开差距的,往往是边界条件处理。
当前主案例重点守住三类高风险点:
- 可空引用和值类型
- 泛型类型参数与约束
- 嵌套类型及其外层 partial 约束
为什么这三类特别危险
因为它们都会同时影响建模和渲染。
例如泛型类型不仅影响类型名,还影响约束子句;嵌套类型不仅影响输出结构,还影响外层类型是否必须 partial;可空类型不仅影响属性模型,还影响最终插值表达式。
当前项目怎么处理
建模阶段会把这些信息提前抽出来,而不是等渲染时临时判断。这样渲染层拿到的已经不是模糊的 Symbol,而是明确的:
NameWithTypeParametersConstraintClausesNeedsNullGuardContainingTypes
一个特别容易漏掉的点
不是只有目标类型要 partial,外层嵌套类型也必须能被重新打开。当前项目把这件事直接做成了诊断,而不是等编译器报更模糊的错误。
边界条件处理得越早,生成器越像一个可维护系统,而不是只会走演示路径的样板代码。
教程导航
继续阅读
当前文章已经挂到教程顺序中,建议按相邻章节继续。