【问题标题】:CA1001 reported on static method in extension classCA1001 报告扩展类中的静态方法
【发布时间】:2018-07-24 04:11:09
【问题描述】:

我有一个扩展类的方法可以生成CA1001

警告:“警告 CA1001 在 'ImageSourceExtensions.d__8' 上实现 IDisposable,因为它会创建以下 IDisposable 类型的成员:'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) 将disposable保存在实现IDisposable的类实例中并将它们传递给扩展

对我来说,压制他们是正确的想法,但任何相反的意见都是值得赞赏的。

【问题讨论】:

  • 不应该使用“this”关键字吗?
  • 如果通过“扩展类”这应该是一个扩展方法,你错过了this关键字。

标签: c# async-await code-analysis dotnet-httpclient


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-05-12
    • 2012-11-22
    • 2011-01-01
    • 2012-01-29
    • 1970-01-01
    • 2015-03-28
    • 2011-11-10
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多