Autofac组件的实例范围具体是怎样的?

2026-05-23 19:330阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1336个文字,预计阅读时间需要6分钟。

Autofac组件的实例范围具体是怎样的?

实例范围决定如何在请求之间共享服务。例如,使用Instance选项,每次请求服务都会返回一个新实例。

实例范围决定如何在请求之间共享服务。

原文地址:docs.autofac.org/en/latest/lifetime/instance-scope.html

每个依赖一个实例
使用这个选项,每次请求服务都会返回一个新实例。使用 InstancePerDependency() 指定。这是默认选项。下面的代码,第2行和第3行是等价的。

var builder = new ContainerBuilder(); builder.RegisterType<Worker>(); builder.RegisterType<Worker>().InstancePerDependency();

下面的代码,每次循环都生成一个新的实例,一共生成 100 个实例。

using(var scope = container.BeginLifetimeScope()) { for(var i = 0; i < 100; i++) { var w = scope.Resolve<Worker>(); w.DoWork(); } }

单个实例

使用这个选项,在根范围或嵌套范围中请求服务,都返回同一个的实例。使用 SingleInstance() 指定。

阅读全文
标签:实例范围

本文共计1336个文字,预计阅读时间需要6分钟。

Autofac组件的实例范围具体是怎样的?

实例范围决定如何在请求之间共享服务。例如,使用Instance选项,每次请求服务都会返回一个新实例。

实例范围决定如何在请求之间共享服务。

原文地址:docs.autofac.org/en/latest/lifetime/instance-scope.html

每个依赖一个实例
使用这个选项,每次请求服务都会返回一个新实例。使用 InstancePerDependency() 指定。这是默认选项。下面的代码,第2行和第3行是等价的。

var builder = new ContainerBuilder(); builder.RegisterType<Worker>(); builder.RegisterType<Worker>().InstancePerDependency();

下面的代码,每次循环都生成一个新的实例,一共生成 100 个实例。

using(var scope = container.BeginLifetimeScope()) { for(var i = 0; i < 100; i++) { var w = scope.Resolve<Worker>(); w.DoWork(); } }

单个实例

使用这个选项,在根范围或嵌套范围中请求服务,都返回同一个的实例。使用 SingleInstance() 指定。

阅读全文
标签:实例范围