Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Extract stable type identity into a shared library for engine, graphs and DataAssets

未关闭
#331 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
功能
描述清晰度
描述清楚
活跃度
活跃
技术栈
csharp

调研方向

Start by reading the engine’s TypeRegistry and alias map, then compare them with MASS4ORG/Graph’s StableId and IdentityRegistry; the issue does not name source files or tests. The work is an owner-gated extraction into a separate repository, coordinated with the serialization branch, Graph#7, and #55. Done means all three layers use the library, existing serialized TypeIds still load, and the documented contract covers canonical text, renames, and cycle rejection.

由索引模型根据 Issue 内容生成。

描述

c:engine p:medium sit:waiting size:L t:refactor
Current State

The engine resolves serialized types through a static TypeRegistry keyed by [TypeId] GUIDs, with an alias map for renamed types and assembly scanning to bind GUIDs to CLR types. The node-graph library (MASS4ORG/Graph) needs the same identity concept for node, port and trigger types and currently carries its own StableId/IdentityRegistry with rename chains. The DataAsset-driven design layer (#55) is growing identity needs of its own. Three separate identity registries would recreate the string-identity problem in a new form: the same asset would need different identities depending on which subsystem reads it.

This issue extracts the shared part into a small general library that all three consume. It is owner-gated: it runs as a separate PR in its own worktree, sequenced against the in-flight serialization branch, and no other engine change rides along.

Tasks:
  • Create the identity library in its own repository: opaque stable identities, a registry and a rename map, nothing more (no reflection, no CLR binding, no serialization)
  • Keep assembly scanning and CLR type binding in the engine, layered over the library
  • Move the engine's alias map onto the library's rename map
  • Replace the graph library's internal identity types with the extracted library (MASS4ORG/Graph#7)
  • Agree with the DataAsset-driven design work (#55) that its identities use the same library
  • Document the identity contract (canonical text form, rename semantics, cycle rejection)
Acceptance Criteria:
  • Serialized TypeIds are unchanged; existing scenes, assets and aliases load as before
  • The library depends on nothing beyond the base class library and is trimming- and AOT-safe
  • The engine, the graph library and the DataAsset layer resolve identities through the same library
  • The PR contains only the extraction and its adoption
Related:
  • #55 (DataAsset-driven design: co-stakeholder for identity)
  • #63 (identity types evaluated without changing serialized IDs)
  • MASS4ORG/Graph#1 (graph core), MASS4ORG/Graph#7 (graph identity registry)
主要语言
C#
星标
1
派生
1
平均合并
2 小时
30 天内合并 PR
35

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

MASS4ORG/Turian 的其他 Issue

查看 MASS4ORG/Turian 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。