mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-06 16:16:44 +08:00
- 优化 CqrsHandlerRegistryGenerator 对 pointer 类型的 runtime type 递归重建与发射逻辑 - 修复 function pointer 签名默认直出导致隐藏类型漏回退的判定边界 - 补充 pointer precise registration 与 function pointer fallback 回归测试 - 更新 cqrs-rewrite 跟踪与 trace 到 RP-047
3.0 KiB
3.0 KiB
CQRS 重写迁移追踪
2026-04-20
阶段:pointer precise runtime type 覆盖扩展(CQRS-REWRITE-RP-047)
- 已在
CqrsHandlerRegistryGenerator中补充 pointer 类型的 runtime type 递归建模与源码发射,precise registration 现可通过MakePointerType()还原隐藏 pointer 响应类型 - 已同步收紧 function pointer 签名的可直接生成判定,只有当签名中的返回值与参数类型均可从 generated registry 安全引用时才走静态注册
- 已保留含隐藏类型 function pointer handler 的 fallback / 诊断回归覆盖,确保 pointer 支持扩展不会误删原有程序集级 fallback 契约边界
- 定向验证与
CqrsHandlerRegistryGeneratorTests全组验证均已通过:dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore -p:RestoreFallbackFolders= -m:1 -nodeReuse:false --filter "FullyQualifiedName~Generates_Precise_Service_Type_For_Hidden_Pointer_Response|FullyQualifiedName~Reports_Diagnostic_And_Skips_Registry_When_Fallback_Metadata_Is_Required_But_Runtime_Contract_Lacks_Fallback_Attribute|FullyQualifiedName~Emits_Assembly_Level_Fallback_Metadata_When_Fallback_Is_Required_And_Runtime_Contract_Is_Available"3/3passeddotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --no-restore -p:RestoreFallbackFolders= -m:1 -nodeReuse:false --filter "FullyQualifiedName~CqrsHandlerRegistryGeneratorTests"14/14passed- 当前沙箱限制 MSBuild named pipe,因此验证在提权环境下执行
阶段:generated registry 激活反射收敛(CQRS-REWRITE-RP-046)
- 已在
CqrsHandlerRegistrar中将 generated registry 的无参构造激活改为类型级缓存工厂 - 默认路径优先使用一次性动态方法直接创建 registry,避免后续每次命中缓存仍走
ConstructorInfo.Invoke - 若运行环境不允许动态方法,则保留原有反射激活回退,确保 generated registry 路径不因运行时限制失效
- 已补充“私有无参构造 generated registry 仍可激活”的回归测试,覆盖现有生成器产物兼容性
- 定向验证已通过:
dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --no-restore -p:RestoreFallbackFolders= -m:1 -nodeReuse:false63/63passed- 当前沙箱限制 MSBuild named pipe,因此验证在提权环境下执行
Archive Context
- 历史跟踪归档:
ai-plan/public/cqrs-rewrite/archive/todos/cqrs-rewrite-history-through-rp043.md
- 历史 trace 归档:
ai-plan/public/cqrs-rewrite/archive/traces/cqrs-rewrite-history-through-rp043.md
当前下一步
- 回到
Phase 8主线,优先选一个明确的 dispatch / invoker 反射缩减点继续推进 - 若继续文档主线,优先补齐
docs/zh-CN/api-reference与教程入口页中仍过时的 CQRS API / 命名空间表述 - 若后续 review thread 或 PR 状态再次变化,再重新执行
$gframework-pr-review复核远端信号