basic .NET Dependency Injection Guidelines docs人说:

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

我不清楚由ActivatorUtilities.CreateInstance()创建的对象是否算作"从容器中解析"的服务.如果我使用此方法创建一个实现IDisposableIAsyncDisposable的实例,我是否负责自己处理它?CreateInstance()绝对是uses容器,以解析所请求类型的其他依赖项.

我相信ActivatorUtilities.CreateInstance()能够创建对象,无论它们的类型或接口是否注册到DI容器.创建已注册的IDisposable服务的实例,还是创建未注册的IDisposable类型的实例,在谁负责处理已创建的实例方面有什么不同吗?

推荐答案

ActivatorUtilities.CreateInstance()总是创建新的实例,您负责处理它.没有集装箱登记.

源代码:

ActivatorUtilities.CreateInstance

ConstructorMatcher.CreateInstance

Csharp相关问答推荐

为什么我不能更改尚未设置的模拟对象属性的值?

如何创建ASP.NET Core主机并在同一进程中运行请求

SignalR客户端不会打印队列位置'

如何在Visual Studio代码中更改大括号模式{},用于C#语言

实体核心框架--HasColumnType和HasPrecision有什么不同?

Azure Function应用(. NET 8)不将信息记录到应用洞察

Blazor Foreach仅渲染最后一种 colored颜色

如何使用C#Interop EXCEL创建度量衡

System.Net.Http.HttpClient.SendAsync(request)在docker容器内的POST方法30秒后停止

在具有不同属性名称的两个类之间创建关系

调用Task.Run()与DoSomethingAsync()有什么不同?

EFR32BG22 BLE在SPP模式下与PC(Windows 10)不连接

EF核心新验证属性`DeniedValues`和`StringCompison`不起作用

在被Interactive Server切换后,Blazor SSR页面无法正确加载JS

在ASP.NET Core 8 MVC中本地化共享视图

System.NotSupportdException:流不支持读取

在等待OnGetAsync时打开Razor Page显示微调器

数据库操作预计影响1行,但实际影响0行; after _dbContext.SaveChanges();

使用Try-Catch-Finally为API端点处理代码--有什么缺点?

从具有泛型类型约束的类继承-Blazor