Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不带BeginLifeTimeScope的Autofac InstancePerLifeTimeScope_C#_Autofac - Fatal编程技术网

C# 不带BeginLifeTimeScope的Autofac InstancePerLifeTimeScope

C# 不带BeginLifeTimeScope的Autofac InstancePerLifeTimeScope,c#,autofac,C#,Autofac,我继承了一个多线程数据处理系统,它使用AutoFac进行依赖注入 实际上,所有依赖项都定义为InstancePerLifetimeScope(),但没有调用container.BeginLifetimeScope()来打开新范围 在这种情况下,我应该期待什么样的行为?我猜是以下情况之一: AutoFac将所有解析请求视为属于单个“全局”作用域,因此为每个解析请求返回相同的实例(行为类似于单例) AutoFac认为不存在作用域,并忽略InstancePerLifetimeScope,将每个解析请求

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

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

在这种情况下,我应该期待什么样的行为?我猜是以下情况之一:

  • AutoFac将所有解析请求视为属于单个“全局”作用域,因此为每个解析请求返回相同的实例(行为类似于单例)
  • AutoFac认为不存在作用域,并忽略InstancePerLifetimeScope,将每个解析请求视为瞬态
  • 该系统本质上是一个多线程Windows服务;因此,没有HTTP请求或相关作用域。

    当您使用Autofac时,您可以从
    ContainerBuilder创建
    IContainer
    。此
    IContainer
    继承自
    ILifetimeScope
    ,它是全局范围,是范围树的根,所有其他范围将继承自此范围

    当您从Autofac解析某些内容时,如果不创建子生命周期范围,则始终存在一个范围
    InstancePerLifetimeScope
    就像
    SingleInstance