【发布时间】:2021-09-15 22:03:53
【问题描述】:
我正在我的应用程序中实现Custom Configuration Provider。
在该提供程序中,我必须进行 REST API 调用。该调用需要有效的 OAuth 2 令牌才能成功。要获得该令牌,我需要一个半复杂的类依赖树。
对于我的应用程序的其余部分,我只是使用依赖注入来获取所需的实例。但是在设置依赖注入之前调用自定义配置提供程序。
我考虑过创建一个依赖注入的“Pre”实例。像这样:
IServiceCollection services = new ServiceCollection();
// Setup the DI here
IServiceProvider serviceProvider = services.BuildServiceProvider();
var myTokenGenerator = serviceProvider.GetService<IMyTokenGenerator>();
但我已经读到,当您创建另一个 ServiceCollection 时,可能会导致问题。我想知道避免这些问题的方法。
如何正确清理 ServiceCollection 和 ServiceProvider 的“pre-DI”实例?
(注意:似乎都没有实现 IDisposable。)
【问题讨论】:
-
这篇文章可能对jerriepelser.com/blog/…有帮助
-
MS DI internal Service Provider 是一次性的
-
“似乎都没有实现 IDisposable” -> 创建一个一次性作用域,并从中解析服务。
标签: asp.net-core asp.net-core-3.1 service-provider servicecollection