CA1001 报告了扩展 class 中的静态方法

CA1001 reported on static method in extension class

我有一个扩展方法 class 生成 CA1001

警告:"Warning CA1001 Implement IDisposable on 'ImageSourceExtensions.d__8' because it creates members of the following IDisposable types: 'HttpClient'."

方法:

 private static async Task<Stream> GetByteArrayAsync(Uri uri, CancellationToken token) {
            using (HttpClient httpClient = new HttpClient()) {
                HttpResponseMessage response = await httpClient.GetAsync(uri, token);
                return await response.Content.ReadAsStreamAsync();
            }
        }

我有几个类似扩展方法的 CA1001 警告实例。我能想到的选项:

1) 使用 [SuppressMessage] 忽略它们

2) 将一次性物品保存在实现 IDisposable 的 class 实例中,并将它们传递给扩展

压制他们感觉对我来说是正确的想法,但任何相反的意见都会受到赞赏。

无论如何,您不应该处理 HttpClient,将其设为静态引用并重新使用它,这就是它的设计目的。不断地重新创建它们 can lead to performance issues。如果你 HttpClient 得到 CA1001,你绝对应该抑制那个。