6.7服务扩展方法

除了系统自带的 IHttpRemoteService 方法,您还可以为其添加自定义扩展方法,以简化代码并减少重复。例如,您可以添加一个 SendAsSpan 方法,用于发送 HTTP 远程请求返回 Span。具体实现如下:

除了系统自带的 IHttpRemoteService 方法,您还可以为其添加自定义扩展方法,以简化代码并减少重复。例如,您可以添加一个 SendAsSpan 方法,用于发送 HTTP 远程请求返回 Span<char>。具体实现如下:

cs
public static class HttpRemoteServiceExtensions{    public static Span<char> SendAsSpan(this IHttpRemoteService httpRemoteService, HttpRequestBuilder httpRequestBuilder, CancellationToken cancellationToken = default)    {        // 空检查        ArgumentNullException.ThrowIfNull(httpRequestBuilder);        var str = httpRemoteService.SendAsString(httpRequestBuilder, cancellationToken);        return str.AsSpan();    }    public static async Task<Span<char>> SendAsSpanAsync(this IHttpRemoteService httpRemoteService, HttpRequestBuilder httpRequestBuilder, CancellationToken cancellationToken = default)    {        // 空检查        ArgumentNullException.ThrowIfNull(httpRequestBuilder);        var str = await httpRemoteService.SendAsStringAsync(httpRequestBuilder, cancellationToken);        return str.AsSpan();    }}

之后,您可以轻松地在 IHttpRemoteService 实例中使用此方法:

cs
httpRemoteService.SendAsSpan(HttpRequestBuilder.Get("https://furion.net"));await httpRemoteService.SendAsSpanAsync(HttpRequestBuilder.Get("https://furion.net"));

利用 C# 扩展方法的特性,您可以极大地丰富 IHttpRemoteService 的功能,减少重复代码,同时提高代码的可读性和可维护性。