使用Reinforced.Typings框架时如何配置使导出类包含基类属性
Reinforced.Typings 导出基类属性配置方案
Reinforced.Typings 默认不会自动拉取未被显式标记导出的基类成员,要实现子类导出结果包含基类Id属性,可根据你需要的TS代码结构选择对应配置:
方案1:直接将基类属性拍平到子类(匹配你的预期输出)
不需要给IdEntity基类加任何导出特性,直接在全局配置中开启AutoExportBaseMembers开关即可,框架会自动递归向上查找所有基类的公开可导出成员,合并到当前类的导出结果中。
配置代码示例:
public static class TypingsConfig { public static void Configure(ConfigurationBuilder builder) { // 开启自动导出基类成员 builder.Global(globalConfig => globalConfig.AutoExportBaseMembers(true)); // 你原本的导出配置保持不变 builder.ExportAsClass<UserModel>(); } }
配置后生成的TS代码会完全符合你的预期:
export class UserModel { public Id: number; public Name: string; public Email: string; }
方案2:TS侧保留类继承关系
如果你希望TS代码和C#侧保持一致的继承结构,而非把基类属性拍平到子类,可以按以下方式配置:
- 给基类
IdEntity也加上[TsClass]特性 - 全局配置开启自动引用传播
配置代码示例:
[TsClass] public class IdEntity { public int Id { get; set; } } public static void Configure(ConfigurationBuilder builder) { builder.Global(globalConfig => globalConfig.AutoPropagateReferences(true)); builder.ExportAsClass<IdEntity>(); builder.ExportAsClass<UserModel>(); }
最终生成的TS代码结构如下,同样可以正常访问Id属性:
export class IdEntity { public Id: number; } export class UserModel extends IdEntity { public Name: string; public Email: string; }
注意事项
- 旧版本中的
FlattenHierarchy配置已被废弃,1.5+版本请统一使用AutoExportBaseMembers实现基类成员合并 - 如果基类中有不需要导出的成员,给对应成员标记
[TsIgnore]特性即可被自动排除
内容的提问来源于stack exchange,提问作者Felipe Costa Gualberto
相关产品推荐
相关产品推荐

