我正在玩
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
到您需要访问这些缩短的方法名称的任何类.