因此,我正在尝试创建一些流畅的代码来执行Web请求。我希望它看起来像这样...
// Result should be of type MyClass
var result = await _webRequests.Get("Api/Route/Here")
.Returns<MyClass>()
.HasToken("MY_TOKEN")
.ExecuteAsync();
// Result should be of type HttpResponseMessage
var result = await _webRequests.Get("Api/Route/Here")
.HasToken("MY_TOKEN")
.ExecuteAsync();
我的目标是获取它,以便如果未指定Returns方法,则返回HttpResponseMessage;如果已指定,则返回指定的类型。
_webRequests 是其中包含一些基本HttpMethod调用的接口
IUseRequired Get(string url);
IUseRequired Post(string url);
然后 IUseRequired 接口具有调用所需的方法...
IUseOptionalOrExecute UsesApi(string apiName);
所有 UsesApi 方法所做的都是告诉使用IHttpClientFactory时要使用哪个HTTPClient。
现在 IUseOptionalOrExecute 接口是问题开始的地方...
IUseOptionalOrExecute Returns<TReturn>();
IUseOptionalOrExecute HasToken(string token);
Task<TReturn> ExecuteAsync();
我希望它看起来像这样,所以传递给 Returns 方法的所有内容都将用作 ExecuteAsync 方法的返回。当然这是行不通的,因为 ExecuteAsync 不知道 TReturn 是什么。我曾考虑过在调用 Returns 方法时将类型存储为变量,但是我无法将 Execute 的返回类型设置为变量类型。可以吗 有人知道我可以解决这个问题的方法吗?谢谢!