You need to enable JavaScript to run this app. ASP.NET Core:Swashbuckle生成TS模型丢失继承,是否需切换NSwag?
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core:Swashbuckle生成TS模型丢失继承,是否需切换NSwag?

Swashbuckle.AspNetCore生成Schema丢失类继承关系问题排查

场景描述

目前使用Swashbuckle.AspNetCore生成API文档,在生成客户端TypeScript模型时发现存在明显缺陷:类继承关系完全丢失,无法实现服务端代码继承结构到TypeScript客户端代码的同步映射,无法自动生成符合预期的客户端模型。

复现场景基于ASP.NET默认WeatherForecast项目,新增基类后的代码结构如下:

public class InfoEntryBase    
{        
   public string Name { get; set; }
   public string Description { get; set; }
}

public class WeatherForecast : InfoEntryBase
{
   public DateTime Date { get; set; }
   public int TemperatureC { get; set; }
   public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
   public string Summary { get; set; }
}

生成效果对比

Swashbuckle 默认生成结果

Swashbuckle当前会将基类的所有属性直接内联到子类的Schema中,没有任何继承关联的标识,生成结果如下:

WeatherForecast{
    name    string
    nullable: true
    description string
    nullable: true
    date    string($date-time)
    temperatureC    integer($int32)
    temperatureF    integer($int32)
    readOnly: true
    summary string
    nullable: true
}

NSwag.AspNetCore 参考生成结果

调研NSwag.AspNetCore后发现,该工具可以正确保留类继承关系,生成的Schema会单独定义基类结构,子类与基类建立继承关联,生成结果如下:

WeatherForecast{
    name    string
    description string
    date*   string($date-time)
    temperatureC*   integer($int32)
    temperatureF*   integer($int32)
    summary string
}
InfoEntryBase{
    name    string
    description string
}

核心疑问

  • Swashbuckle上述丢失继承关系的现象,是否是使用过程中遗漏了相关配置导致的?
  • 如果存在可调整的配置项,如何设置才能让Swashbuckle正确保留类继承结构,生成匹配的TypeScript客户端模型?
  • 若Swashbuckle无法通过配置实现该需求,是否必须切换到NSwag.AspNetCore才能满足使用要求?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 17:45:01