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

我正在玩
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

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

点赞