You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Telosys生成继承泛型基类的C#类及Guid主键配置问题

实现方案

1. 处理Telosys无内置Guid类型的问题

使用Telosys的类型别名映射机制即可解决:

  • 在DSL模型中给Guid类型的字段统一标记为string类型,同时用自定义标签标注实际类型为Guid,后续代码生成模板识别到该标签就把字段类型替换为System.Guid。
  • 也可以直接在Telosys的类型映射配置文件中新增自定义类型映射规则,把你自定义的类型标识映射到C#的Guid类型。

2. 泛型基类主键的代码生成实现

你设想的用特殊元属性携带基类类型参数的方案可直接落地,步骤如下:

  • 在每个实体的DSL定义里增加你提到的metaproperty特殊属性,把泛型参数类型、主键名称等信息通过标签的结构化内容存储,比如示例里的typed_param:Guid,后续模板解析该内容即可拿到泛型参数值。
  • 编写自定义Telosys代码模板时,遍历每个实体的属性,先提取metaproperty里的typed_param值,生成继承声明时直接拼接为Entity<${参数值}>即可。
  • 不需要在实体中重复定义Id字段,该字段已在基类实现,模板自动过滤掉metaproperty这个虚拟属性,不生成到最终实体代码里即可。

参考Country实体DSL定义:

Country {
  metaproperty: string {#base       
  @Label("typed_param:Guid;name:Id;form_sections:基础信息~1|其他信息~2;display_layout:rows(n)_cols(12)")}
  CountryName : string {@Label("form_section:~1;display_layout:row(1)col(1)colspan(12)")};
  CountryCode : string {@Label("form_section:~1;display_layout:row(2)col(1)colspan(6)")};
}

按上述规则处理后,生成的代码完全符合你给出的预期结构。

3. 表单布局元数据的落地

  • 代码生成阶段,把每个实体metaproperty里的表单分栏信息、每个普通属性里的布局参数统一提取,序列化为JSON结构,和实体类代码一起输出到指定文件即可,比如每个实体对应一个{EntityName}FormConfig.json文件。
  • 如果你开发了拖拽GUI配置工具,只需要把GUI输出的布局参数按约定的键值格式写入到对应属性的@Label标签里即可,模板只负责读取解析不需要感知GUI逻辑,两端遵守同一套字段约定就能打通流程。

内容的提问来源于stack exchange,提问作者Rad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:36:04