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

如何让Swagger为WebAPI泛型类响应生成通用文档而非重复类

解决Swagger泛型类重复生成冗余类的问题

要让Swagger识别并显示泛型类的原始定义,而非生成Int32MySmartList这类拼接命名的冗余类,只需在Swagger配置中自定义SchemaId生成策略,具体操作如下:

1. 配置SwaggerGen的SchemaId规则

在项目的Program.cs(或Startup.cs,依.NET版本而定)中,找到Swagger的配置代码,添加自定义SchemaId生成逻辑:

builder.Services.AddSwaggerGen(options =>
{
    // 自定义SchemaId,保留泛型类的原始命名格式
    options.CustomSchemaIds(type =>
    {
        if (type.IsGenericType)
        {
            // 提取泛型参数名称,拼接成"类名<泛型参数1,泛型参数2...>"格式
            var genericArgs = type.GetGenericArguments()
                .Select(t => t.Name)
                .ToArray();
            return $"{type.Name.Split('`')[0]}<{string.Join(",", genericArgs)}>";
        }
        // 非泛型类型直接返回类名
        return type.Name;
    });
});

2. 验证效果

重启项目后,Swagger文档中会直接显示MySmartList<WeatherForecast>、MySmartList<int>、MySmartList<string>这类符合泛型语法的命名,不再生成冗余的拼接类。

补充:XML注释支持(可选)

如果项目使用XML注释,需确保Swagger能正确读取泛型类的注释,只需在SwaggerGen配置中添加XML注释路径:

options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "你的项目名称.xml"));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:12:06