簡體   English   中英

當對象放置在依賴注入容器中時,您如何處理 CA2000(IDisposable 對象的處置)?

[英]How do you deal with CA2000 (Dispose of IDisposable Objects) when the objects are placed in a Dependency Injection container?

根據 Microsoft 的說法,HttpClient 的最佳實踐是維護 HttpClient 的 singleton 版本(釋義,但這是結果。不要立即處理它)。 我自己的測試表明,與為每條消息重新創建 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:在丟失 scope 之前處理對象。 顯然我可以壓制,但這讓我很困擾,因為還有其他 IDisposable 對象可能想要放入 DI 容器中。 使用 DI 模式時,此警告是否有效? 處理它有什么技巧嗎?

同樣的問題,同樣的想法。

您可以做的是將其分配給一個字段

例如 this.httpClient = new HttpClient();

無論如何,這對於單身人士來說可能不是一個壞主意,因此他們在國際奧委會之外是一個明確的所有者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM