![](/img/trans.png)
[英]How to deal with cross-cutting concerns in a OO Application? Use Singleton? Dependency Injection? What?
[英]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.