5.19HttpDeclarativeBuilder 构建器
HttpDeclarativeBuilder 构建器是框架提供专门用来动态构建 HTTP 声明式请求所需的各项设置。HttpDeclarativeBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.Declarative 的多个静态重载
HttpDeclarativeBuilder 构建器是框架提供专门用来动态构建 HTTP 声明式请求所需的各项设置。HttpDeclarativeBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.Declarative 的多个静态重载方法创建 HttpDeclarativeBuilder 的实例。
HttpRequestBuilder.Declarative(methodInfo, args);上述代码演示了如何利用 MethodInfo 类型参数和参数数组来动态构建一个 HTTP 声明式请求构建器。这一机制使得我们能够针对任意类型的方法实现 HTTP 声明式请求功能。以下是一个具体的例子:
public class NormalClass{ [Get("https://furion.net"/)] public Task<string> GetStringAsync() { throw new NotImplementedException(); // 无需实现 }}通过以下步骤,我们可以动态地基于 NormalClass 的 GetStringAsync 方法构建 HTTP 声明式请求:
// 获取 NormalClass 类型的 GetStringAsync 方法var getStringMethod = typeof(NormalClass).GetMethod(nameof(NormalClass.GetStringAsync), BindingFlags.Instance | BindingFlags.Public);// 发送 HTTP 请求var str = await httpRemoteService.SendAsAsync<string>(HttpRequestBuilder.Declarative(getStringMethod, []));通过这种方式,我们实现了对任意类型方法的 HTTP 声明式请求的动态构建。此外,HTTP 声明式请求还支持多种方法,包括但不限于:
httpRemoteService.Declarative(method, args);await httpRemoteService.DeclarativeAsync<T>(method, args);httpRemoteService.SendAs(httpDeclarativeBuilder);await httpRemoteService.SendAsAsync<T>(httpDeclarativeBuilder);