这basic .NET Dependency Injection Guidelines docs人说:
容器负责清理它创建的类型,并对IDisposable实例调用Dispose.从容器解析的服务永远不应由开发人员处置.如果某个类型或工厂注册为单例,则容器会自动处理该单例.
我不清楚由ActivatorUtilities.CreateInstance()
创建的对象是否算作"从容器中解析"的服务.如果我使用此方法创建一个实现IDisposable
或IAsyncDisposable
的实例,我是否负责自己处理它?CreateInstance()
绝对是uses容器,以解析所请求类型的其他依赖项.
我相信ActivatorUtilities.CreateInstance()
能够创建对象,无论它们的类型或接口是否注册到DI容器.创建已注册的IDisposable
服务的实例,还是创建未注册的IDisposable
类型的实例,在谁负责处理已创建的实例方面有什么不同吗?