gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:23:33 25 4
gpt4 key购买 nike

根据 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: Dispose objects before losing scope. 显然我可以抑制,但这让我很困扰,因为还有其他 IDisposable 对象可能想要放入去 ionic 容器中。使用 DI 模式时此警告有效吗?有什么应对技巧吗?

最佳答案

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

你可以做的是将它分配给一个字段

例如 this.httpClient = new HttpClient();

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

关于singleton - 当对象被放置在依赖注入(inject)容器中时,你如何处理 CA2000(处理 IDisposable 对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com