加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用Swagger命名AutoRest生成的方法名称

发布时间:2020-12-15 22:31:22 所属栏目:百科 来源:网络整理
导读:我正在玩 AutoRest和 Swagger项目.我的Web API控制器有一个名为GetAllAsync的方法.当我为服务生成客户端时,客户端有一个接口IResourcesOperations,其中Resources是控制器的名称. 该接口有一个名为GetAllAsyncWithHttpMessagesAsync的方法.然后是一个名为Reso
我正在玩 AutoRest和 Swagger项目.我的Web API控制器有一个名为GetAllAsync的方法.当我为服务生成客户端时,客户端有一个接口IResourcesOperations,其中Resources是控制器的名称.

该接口有一个名为GetAllAsyncWithHttpMessagesAsync的方法.然后是一个名为ResourcesOperationsExtensions的静态类,它定义了一个名为GetAllAsync的方法和一个名为GetAllAsyncAsync的方法.第一个实际上是从线程池(Task.Factory.StartNew)运行第二个新线程.有人知道原因吗?

我发现我可以用属性装饰我的控制器动作方法

[SwaggerOperation("GetResources")]

这将在客户端类上生成一个名为GetResourcesWithHttpMessagesAsync的方法,并从接口和扩展方法类中删除此Web API操作的所有方法.

现在我的问题是,为什么这三种方法默认生成?

有没有办法使用名为GetResources的方法生成客户端(即摆脱WithHttpMessagesAsync后缀)甚至GetAllAsync?

解决方法

AutoRest(至少是更新版本)生成带有后缀Extensions的类.这些类包含代理接口上的扩展方法,允许您使用缩短的方法名称来调用方法,就像您之后使用的那样.

只需添加一个

@using TheNameSpace.OfYour.Client.Extensions

到您需要访问这些缩短的方法名称的任何类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读