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

.NET 5下使用NSwag能否为每个控制器生成独立客户端类?

NSwag生成C#客户端按控制器拆分类的配置说明

默认行为确认

你观察到的是NSwag生成C# Web客户端的默认标准实现:默认会将所有控制器的接口方法合并到单个客户端类中,方法命名默认采用{控制器名}_{操作名}的格式,也就是你遇到的webClient.Employee_get()调用形式。

按控制器拆分独立类的实现方式

NSwag完全支持按控制器拆分生成独立的客户端类,不同生成场景的配置方式如下:

  • 如果你通过Visual Studio 添加服务引用 -> OpenAPI 方式生成:
    1. 添加服务引用的弹窗中点击「高级」按钮
    2. 找到生成多个客户端类的配置项,勾选后保存即可,生成后会自动按照控制器名拆分独立类,每个类只包含对应控制器的接口方法
  • 如果你通过NSwag配置文件/NSwag.MSBuild/NSwagStudio生成:
    找到配置中的operationGenerationMode参数,将值设置为MultipleClientsFromFirstTagAndOperationName即可。OpenAPI规范中默认每个接口的第一个Tag就是对应控制器名称,该配置会自动按Tag分组,每个分组生成一个独立的客户端类。

配置完成后,调用方式即可匹配你之前使用Autorest的习惯,示例如下:

// 初始化对应控制器的客户端,支持直接从DI容器注入
IEmployeeClient employeeClient = new EmployeeClient(httpClient);
var employeeList = await employeeClient.GetAsync();

// 自行封装统一基类后也可以实现原调用结构
IWebClient webClient = new WebClient(httpClient);
var employeeList = await webClient.Employee.GetAsync();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:33:02