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
相关产品推荐
相关产品推荐

