没有 BeginLifeTimeScope 的 Autofac InstancePerLifeTimeScope

Autofac InstancePerLifeTimeScope without BeginLifeTimeScope

我继承了一个使用AutoFac 进行依赖注入的多线程数据处理系统。

实际上所有依赖项都定义为 InstancePerLifetimeScope(),但没有调用 container.BeginLifetimeScope() 来打开新范围。

在这种情况下我应该期待什么行为?我猜是以下其中一项:

  1. AutoFac 将所有解析请求视为属于单个 'global' 范围,因此 returns 每个解析请求都使用相同的实例(表现得像一个单例)
  2. AutoFac 认为不存在范围并忽略 InstancePerLifetimeScope 并将每个解析请求视为瞬态。

系统本质上是一个多线程的Windows服务;因此没有 HTTP 请求或相关范围。

当您使用 Autofac 时,您从 ContainerBuilder 创建了一个 IContainer。这个 IContainer 继承自 ILifetimeScope 并且它是全局作用域,作用域树的根,所有其他作用域都将继承自该作用域。

当您从 Autofac 解析某些内容时,总会有一个范围,如果您不创建子生命周期范围 InstancePerLifetimeScope 就像 SingleInstance