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

问题描述 投票:1回答:1

根据Microsoft,对于HttpClient的最佳实践是维护HttpClient的单例版本(解释一下,但这是结果,请不要立即处置它)。我自己的测试表明,与为每个消息重新创建HttpClient相比,进行大量Http操作时,单个实例具有明显的优势。因此,自然地,将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模式时此警告有效吗?有什么技巧可以解决吗?

singleton stylecop ca2000
1个回答
0
投票

同一问题,相同的想法。

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

例如this.httpClient = new HttpClient();

无论如何,对于单身人士来说,这可能不是一个坏主意,因此他们是IOC之外的明确所有人。

© www.soinside.com 2019 - 2024. All rights reserved.