由 ActivatorUtilities.CreateInstance() 创建的服务是否由 DI 容器自动处置?

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

基本 .NET 依赖注入指南文档说:

容器负责清理它创建的类型,并在 IDisposable 实例上调用 Dispose。从容器解析的服务永远不应该由开发人员处置。如果类型或工厂注册为单例,容器会自动处理单例。

我不清楚

ActivatorUtilities.CreateInstance()
创建的对象是否算作“从容器解析”的服务。如果我使用此方法创建一个实现
IDisposable
IAsyncDisposable
的实例,我是否负责自行处置它?
CreateInstance()
肯定使用容器来解决所请求类型的其他依赖关系。

我相信

ActivatorUtilities.CreateInstance()
能够创建对象,无论其类型或接口是否已在 DI 容器中注册。创建已注册
IDisposable
服务的实例与创建未注册
IDisposable
实例的实例的行为是否不同,在谁负责处置创建的实例方面有什么不同吗?

c# .net-core dependency-injection
1个回答
0
投票

ActivatorUtilities.CreateInstance()
总是创建新实例,你负责它的处置。没有集装箱注册。

源代码:

ActivatorUtilities.CreateInstance

ConstructorMatcher.CreateInstance

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