当对象放置在依赖关系注入容器中时,如何处理 CA2000(释放 IDisposable 对象)?



根据Microsoft的说法,HttpClient的最佳实践是维护HttpClient的单例版本(释义,但这是结果。 不要立即处理掉它(。 我自己的测试表明,在执行大量 Http 操作时,单个实例比为每条消息重新创建 HttpClient 具有明显的优势。 因此,自然而然地,将 HttpClient 放在 DI 容器中是有意义的。

// Initialize the HTTP client.
HttpClient httpClient = new HttpClient();
httpClient.Timeout = Timeout.Infinite;
httpClient.BaseAddress = new Uri("https://localhost");
serviceCollection.AddSingleton(httpClient);

问题是我收到来自 StyleCop 的警告:CA2000:在失去范围之前释放对象。显然我可以抑制,但这困扰着我,因为还有其他 IDisposable 对象可能想要放在 DI 容器中。 使用 DI 模式时,此警告是否有效? 有什么技巧可以处理它吗?

同样的问题,同样的想法。

您可以做的是将其分配给字段

例如 this.httpClient = new HttpClient((;

无论如何,对于单身人士来说,这可能不是一个坏主意,因此在国际奥委会之外有一个明确的所有者。

相关内容

  • 没有找到相关文章

最新更新